Android---启动第三方应用

来源:互联网 发布:软件测试用例实例 编辑:程序博客网 时间:2024/06/05 02:27

一:程序中调用其它程序,代码如下:

 {       Intent intent = new Intent(Intent.ACTION_MAIN);      ComponentName componentName = new                ComponentName("com.xxxx", "com.xxx.xx");      intent.setComponent(componentName);          startActivity(intent);}

在代码中”com.xxxx” 是要打开的程序包名,” com.xxx.xx”是要打开的Activity!

二:但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名!

下面是实现代码:

private void openApp(String packageName) {PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(pi.packageName);List<ResolveInfo> apps =getPackageManager() .queryIntentActivities(resolveIntent, 0);ResolveInfo ri = apps.iterator().next();if (ri != null ) {String packageName = ri.activityInfo.packageName;String className = ri.activityInfo.name;Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);ComponentName cn = new ComponentName(packageName, className);intent.setComponent(cn);startActivity(intent);   }}  

针对于:

Intent intent = new Intent(Intent.ACTION_MAIN);                 intent.addCategory(Intent.CATEGORY_LAUNCHER);

这两行代码,我们可以从AndroidMinifest.XML里面就可以看出它的作用:

 <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>
 注意点:所有要打开的第三方应用的Activity的exported必须设置为True;
0 0
原创粉丝点击