启动其他的程序

在一个自己的应用启动另外的程序。
首先要知道要启动的目的程序的包名,并且要知道要启动的那个应用程序的main activity ,利用这两个就可以在自己的程序里启动。例如:
 Intent intent=new Intent(); 

intent.setComponent(new ComponentName("com.sdut.edu.activity",
"com.sdut.edu.activity.ElectricalMain"));

intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);

这里启动的是自己写的应用。
启动系统自带的应用程序感觉与启动这个程序不一样呢?
例如:
  Intent intent=new Intent();
PackageManager manager=TestLaunch.this.getPackageManager();
// intent.setComponent(new ComponentName("com.android.calendaroid.app.divxs", "com.android.calendaroid.app.divxs.LaunchActivity"));
// intent.setAction(Intent.ACTION_VIEW);
intent =manager.getLaunchIntentForPackage("com.samsung.ebook.reader");
// intent =manager.getLaunchIntentForPackage("com.android.calendar");
startActivity(intent);


启动了一个系统自带的阅读器程序。
查看系统已经安装的应用程序则是要根据PackageManager获取,指定方法参数。也可以指定多个参数一起决定要获取的已安装的应用程序。
在启动之前判断设备是否已经安装此应用再打开,方法如下:
打开其他的应用
/**
* 程序的工具类<br>
* @author zhanglm
*
*/
public class AppUtils {
/**
* 在应用中启动其他应用<br>
* @param context
* @param packageName
* @return
*/
public static boolean startNewApp(Context context,String packageName){
PackageInfo pi = null;
try {
pi = context.getPackageManager().getPackageInfo(packageName, 0);
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);
List<ResolveInfo> apps = context.getPackageManager().queryIntentActivities(resolveIntent, 0);
if(apps.size() > 0){
Iterator<ResolveInfo> iterator = apps.iterator();
ResolveInfo ri = iterator.next();
if(ri != null){
String packageName1 = ri.activityInfo.packageName;
String className = ri.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName1, className);
intent.setComponent(cn);
context.startActivity(intent);
Toast.makeText(context, "start successed", Toast.LENGTH_SHORT).show();
return true;
}else{
return false;
}

}else{
// Toast.makeText(context, "start fail", Toast.LENGTH_SHORT).show();
return false;
}
} catch (NameNotFoundException e) {
// Toast.makeText(MainActivity.this, "this app does not exit in your device", Toast.LENGTH_SHORT).show();
return false;
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值