从一个APP启动另一个APP的Activity的方法
1、通过自定义action启动
这种方式只需要在代码中设置一个action即可, 系统会自动过滤去找到这个action所对应的Activity
当前APP的代码
Intent intent = new Intent();
//这里是采用的自定义action
intent.setAction("transBundle.app");
startActivity(intent);
待启动APP 的activity在AndroidManifest.xml中的配置
<!- 需要配置对应的自定义action->
<activity
android:name=".MyActivity"
android:label="@string/app_name"
android:exported="true">
<intent-filter>
<action android:name="transBundle.app"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
2、通过在Intent中通过指定包名和类名来查找
直接在当前APP中写以下代码,即可打开指定APP的activity
ComponentName componetName = new ComponentName(
"com.poynt.weibo", //这个是另外一个应用程序的包名
"com.poynt.weibo.ui.IndexActivity"); //这个参数是要启动的Activity的全路径名
try {
Intent intent = new Intent();
intent.setComponent(componetName);
startActivity(intent);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "可以在这里提示用户没有找到应用程序,或者是做其他的操作!", 0).show();
}
3、通过scheme启动
其实这个方法和方法1类似, 只是说增加了scheme参数, scheme更多的用于 在网页或者H5上来启动我们的APP, 比如在手机官网上通过scheme可以直接打开我们的app, 这里我们只是从APP用scheme启动另一个APP
当前应用的代码:
Uri uri = Uri.parse("app://my.test");
Intent intent = new Intent("transBundle.app", uri);
startActivity(intent);
待打开APP的AndroidManifest配置
<activity
android:name=".MyActivity"
android:label="service"
android:exported="true">
<intent-filter>
<action android:name="transBundle.app"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="app" android:host="my.test"/>
</intent-filter>
</activity>
其中app类似于http://www.baidu.com中的 http, 表示传输协议; my.test类似于www.baidu.com, 表示主机名