Android 使用 Intent 打开第三方应用或调用制定 Activity
- Intent intent = new Intent();
- intent.setClassName("package name", "activity name");
- // 内部调用 intent.setComponent(new ComponentName("package name", "activity name"));
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 可选
- // 知道 App 的包名和 Activity 的全路径及其名称
- // 启动的目标 Activity 在 AndroidManifest.xml 中的属性 Export="true"
- // 也可以不判断
- if (intent.resolveActivityInfo(getPackageManager(), PackageManager.MATCH_DEFAULT_ONLY) != null) {
- startActivity(intent);
- }
-
-
- String packageName="package name";
- PackageManager packageManager = context.getPackageManager();
- Intent it = packageManager.getLaunchIntentForPackage(packageName);
- if (it != null){
- startActivity(it);
- }
-
- // 隐式调用
- Uri uri = Uri.parse("http://www.abc.xyz");
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- if (intent.resolveActivity(getPackageManager()) != null) {
- startActivity(intent);
- }
Ps: activity
android.intent.action.MAIN 决定应用程序最先启动的Activity
android.intent.category.LAUNCHER 决定应用程序是否显示在程序列表里