Android 一个应用启动另外一个应用
2011-10-14 11:15
567 查看
Android中 一个应用启动另外一个应用一般有2种情况,被启动应用的包名已知和未知两种情况:
*情况一 ==》[b]已知包名[b]通常有两种方法:[/b][/b]
方法一:
方法二:
方法二中AndroidManifest.xml中category设置为android.intent.category.DEFAULT的情况是当Intent启动的时候没有明确指定启动哪个antivit时候就要这样设置。
[b]*情况二 ==》未[b]知包名:[/b][/b]
这种情况虽然是不知道应用的包名,但是最终启动应用还是通过包名启动。所以要通过一种方法获得手机内应用的包名。
手机内分系统预装应用和非系统自己安装的应用,可以通过下边的方法判断,返回一个包名的List集合:
====Demo源码下载地址====
*情况一 ==》[b]已知包名[b]通常有两种方法:[/b][/b]
方法一:
/**启动另外应用的代码,其中被启动的应用的包名为org.hy,应用的入口为org.hy.Test222Activity,此方法的2个应用的AndroidManifest.xml文件都不需要修改**/ Intent intent = new Intent(); intent.setComponent(new ComponentName("org.hy","org.hy.Test222Activity")); intent.setAction(Intent.ACTION_VIEW); startActivity(intent);
方法二:
/**启动另外应用的代码,其中被启动应用的action为org.hy.test222(自己随便定义),此方法的被启动的应用的AndroidManifest.xml要做修改**/ Intent intent = new Intent(); intent.setAction("org.hy.test222"); startActivity(intent);
/**被启动应用的AndroidManifest.xml**/ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.hy" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Test222Activity" android:label="@string/app_name"> <intent-filter> <action android:name="org.hy.test222"/> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest>
方法二中AndroidManifest.xml中category设置为android.intent.category.DEFAULT的情况是当Intent启动的时候没有明确指定启动哪个antivit时候就要这样设置。
[b]*情况二 ==》未[b]知包名:[/b][/b]
这种情况虽然是不知道应用的包名,但是最终启动应用还是通过包名启动。所以要通过一种方法获得手机内应用的包名。
手机内分系统预装应用和非系统自己安装的应用,可以通过下边的方法判断,返回一个包名的List集合:
/**获得手机内应用的包名,返回一个List集合**/ public List<PackageInfo> getAllApps() { List<PackageInfo> apps = new ArrayList<PackageInfo>(); PackageManager packageManager = this.getPackageManager(); //获取手机内所有应用 List<PackageInfo> paklist = pManager.getInstalledPackages(0); for (int i = 0; i < paklist.size(); i++) { PackageInfo pak = (PackageInfo) paklist.get(i); //判断是否为非系统预装的应用 (大于0为系统预装应用,小于等于0为非系统应用) if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) { apps.add(pak); } } return apps; }获得包名后,就可以通过获得要启动的包名启动应用了
public void launchApp() { PackageManager packageManager = this.getPackageManager(); List<PackageInfo> packages = getAllApps(); PackageInfo pa = null; for(int i=0;i<packages.size();i++){ pa = packages.get(i); //获得应用名 String appLabel = packageManager.getApplicationLabel(pa.applicationInfo).toString(); //获得包名 String appPackage = pa.packageName; Log.d(""+i, appLabel+" "+appPackage); } Intent intent = packageManager.getLaunchIntentForPackage("jp.co.johospace.jorte");//"jp.co.johospace.jorte"就是我们获得要启动应用的包名 startActivity(intent); }
====Demo源码下载地址====
相关文章推荐
- Android高手进阶教程(十二)之----Android 在一个应用中如何启动另外一个已安装的应用!!!
- Android应用启动另外一个apk应用的方法
- Android在应用中依据包名启动另外一个APP
- android应用如何启动另外一个apk应用
- Android 在一个应用中如何启动另外一个已安装的应用!!!
- Android高手进阶教程(十二)之----Android 在一个应用中如何启动另外一个已安装的应用!!!
- Android 安装和启动另外一个应用
- Android 安装和启动另外一个应用
- Android高手进阶教程(十二)之----Android 在一个应用中如何启动另外一个已安装的应用!!!
- Android 在一个应用中如何启动另外一个已安装的应用!!!
- Android中在一个应用中去启动另外一个应用
- Android 安装和启动另外一个应用
- Android高手进阶教程(十二)之----Android 在一个应用中如何启动另外一个已安装的应用!
- android应用如何启动另外一个apk应用
- Android 一个应用启动另外一个应用
- Android 在一个应用中如何启动另外一个已安装的应用
- Android 在一个应用中如何启动另外一个已安装的应用
- Android应用开发学习之启动另外一个Activity
- Android中 一个应用启动另外一个应用一
- Android:在一个应用中启动另外一个已安装的应用