• 不同apk的activity互相调用


    目标:CHFSAsk.apk调用CHFSAdviser.apk中的AppStart和MainActivity两种activity。

    CHFSAsk.apk:去调用的apk, 包名为com.chfs.ask
    CHFSAdviser.apk:被调用的apk, 包名为com.chfs.adviser

    要调用的activity类型分两种:
    A、AppStart   manifest.xml中activity声明中 intent-filter字段带有<action android:name="android.intent.action.MAIN" />的activity

    B、MainActivity:其他 activity

    A类activity调用方法:

    1、需要在调用者自身apk此处即为CHFSAsk.apk的manifest.xml中添加需要调用的activity的声明:

    <activity android:name=activity的名称>
            <intent-filter>
                    <action android:name="android.intent.action.VIEW"></action>
                    <category android:name="android.intent.category.DEFAULT"></category>
            </intent-filter>
    </activity>
    
    <!-- "activity的名称"为:"com.chfs.adviser.app.AppStart"或者"com.chfs.adviser.ui.MainActivity"-->

    2、CHFSAsk.apk中实现的调用代码:

    try{                                
            ComponentName toActivity = new ComponentName(需要启动apk的包名,需要启动的activity);
    
            Intent intent = new Intent();
            intent.setComponent(toActivity);
            intent.setAction("android.intent.action.VIEW");
    
            CurActivity.this.startActivity(intent);
    }catch(Exception e){
            Log.v("go to apk error","------>"+e.toString());
    }
    
    <!-- "需要启动apk的包名"为:com.chfs.adviser-->
    <!-- "需要启动的activity"为:"com.chfs.adviser.app.AppStart"或者"com.chfs.adviser.ui.MainActivity"-->

    对B类activity调用方法:

    除了A类两步操作之外,还要进行如下处理
    3、还需要在Callee.apk的manifest.xml中添加一些代码,有两种处理方式:
    I).最简单,只要在CHFSAdviser.apk的manifest.xml中的MainActivity对应的activity字段中添加android:exported="true"即可。
    II).将MainActivity的exported设置为false,然后两个apk协商一个ShareUserId放在各自的manifest.xml中,

    CHFSAdviser.apk:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.chfs.adviser"
        android:versionCode="1"
        android:versionName="1.0" 
        
        android:sharedUserId="com.wyf"
        >

    CHFSAsk.apk:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.chfs.ask"
        android:versionCode="1"
        android:versionName="1.0" 
        
        android:sharedUserId="com.wyf"
        >

    这种做法可以实现只有知道ShareUserId的apk才能调用。

  • 相关阅读:
    线上问题随笔记录数据库连接池问题
    MySQL索引类型总结和使用技巧以及注意事项
    elastic-job的原理简介和使用
    新生 & 语不惊人死不休 —— 《无限恐怖》读后有感
    USACO Section2.1 Hamming Codes 解题报告 【icedream61】
    USACO Section2.1 Healthy Holsteins 解题报告 【icedream61】
    USACO Section2.1 Sorting a Three-Valued Sequence 解题报告
    USACO Section2.1 Ordered Fractions 解题报告
    USACO Section2.1 The Castle 解题报告
    USACO Section1.5 Superprime Rib 解题报告
  • 原文地址:https://www.cnblogs.com/w-y-f/p/4019374.html
Copyright © 2020-2023  润新知