本文重要记录:
- 应用 Intent 打开第三方应用或指定 Activity 的三种方法
- 应用膳绫擎庞种方法时分别若何断定该 Intent 可否被解析
- 断定该 Intent 可否被解析中可能出现的漏掉
1. App 的人口 Activity 与其 icon

基本常识
- <application>
- <activity android:name=".MainActivity" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- ...
- </application>
该办法针对肮脏道包名,想要启动该应用时应用,对该应用的独一限制是 有默认的人口 Activity 。
- String package_name="xx.xx.xx";
- PackageManager packageManager = context.getPackageManager();
- Intent it = packageManager.getLaunchIntentForPackage(package_name);
- startActivity(it);
只有设备了一个如许的 Activity,这个应用才会点击的时刻知道启动哪个 Activity,如不雅把 category 的值修改为 android.intent.category.DEFAULT 那么,这个应用将在桌面看不到 icon,无法直接打开了。
应用 Intent 打开第三方应用或指定 Activity 的方法
一个通俗的应用默认会有一小我口 Activity,它在 AndroidManifest.xml 一一般如许写:
- Uri uri = Uri.parse("http://www.abc.xyz");
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- startActivity(intent);
肮脏道包名 - 须要有默认的人口 Activity
启动指定第三方应用的 Activity - 须要包名和 Activity 名,且该 Activity 的 Export=“true”
隐式启动第三方应用
1. 应用 PackageManager.getLaunchIntentForPackage()
当没有默认的人口 Activity 时,会报 NullPointerException 异常:
- java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.toString()' on a null object reference
再看看 getLaunchIntentForPackage() 办法的解释:

网友点评
精彩导读
科技快报
品牌展示