*情况一 ==》已知包名通常有两种方法:
方法一:
[java]
/**启动另外应用的代码,其中被启动的应用的包名为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);
方法二:
[java]
/**启动另外应用的代码,其中被启动应用的action为org.hy.test222(自己随便定义),此方法的被启动的应用的AndroidManifest.xml要做修改**/
Intent intent = new Intent();
intent.setAction("org.hy.test222");
startActivity(intent);
[html]
/**被启动应用的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时候就要这样设置。
*情况二 ==》未知包名:
这种情况虽然是不知道应用的包名,但是最终启动应用还是通过包名启动。所以要通过一种方法获得手机内应用的包名。
手机内分系统预装应用和非系统自己安装的应用,可以通过下边的方法判断,返回一个包名的List集合:
[java]
/**获得手机内应用的包名,返回一个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;
}
获得包名后,就可以通过获得要启动的包名启动应用了
[java]
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);
}
相关推荐
Android中 一个应用启动另外一个应用一般有2种情况,被启动应用的包名已知和未知两种情况:情况一 ==》已知包名通常有两种方法、情况二 ==》未知包名。 Demo写的很详细。
一个简单案例,可获取android系统所有应用程序列表,实现点击列表中的某一项,打开相应的应用
一个app启动另一个app,这个玩法挺火的嘛,有没有试过更新QQ到5.1版本,QQ的健康里面就可以添加其他app,实现从QQ跳转到其他app应用,这里模拟写了一个demo
Android应用程序可以实现开机时启动相关应用 如service等 Android系统在开机启动时会发出一个系统广播"android intent action BOOT COMPLETED" 在接收到这个广播就可以实现开机自启动功能 下面就是一个...
Android 开机自启动应用, BOOT_COMPLETED
Android开机自启动小示例
android开机启动指定的应用 浏览器 Activity
Android应用开机自动启动代码Demo,下载后直接放在Android Studio里运行就可以
一款实用Android平台上的应用开机启动项管理
Android应用开机时自动启动 想要编写自启动应用的可以参考些源码!
大家最为熟悉的拨号盘或者短信应用,在第一次启动的时候,会有一定时间的白屏现象,其实,默认的情况下,android程序启动时,都会有一个黑屏或者白屏闪过的现象,在白屏或者黑屏过后才显示真正的应用界面。...
在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用...
Android_gif应用启动动画,动画播放完后跳往自定义的主菜单
在Android平台上实现应用的自启动功能。部分山寨机修改系统,可能会出现问题,
Android在一个app中实现另一个app的自动安装,安装完成后自动打开(需Root),详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/77485561
Android应用源码之Android中禁止某软件的安装_安装
主要介绍了Android应用启动另外一个apk应用的方法,涉及Android基于intent的package调用与管理技巧,需要的朋友可以参考下
Android开发基础,讲述了Android开发环境的搭建、Android常用工具的使用和第一个Android应用程序的开发 第二篇 技术篇 第3章 Android中的资源访问 Android 中的资源访问,讲述了如何定义和访问Android中的外部...
Android脚本init.rc中写service,应用中启动该service