您的位置:首页 > 移动开发 > Android开发

Android---启动第三方应用

2016-04-27 21:35 411 查看
一:程序中调用其它程序,代码如下:

{
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: