启动其他的程序

阅读更多
在一个自己的应用启动另外的程序。
首先要知道要启动的目的程序的包名,并且要知道要启动的那个应用程序的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获取,指定方法参数。也可以指定多个参数一起决定要获取的已安装的应用程序。
在启动之前判断设备是否已经安装此应用再打开,方法如下:
打开其他的应用
/**
 * 程序的工具类
* @author zhanglm * */ public class AppUtils { /** * 在应用中启动其他应用
* @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 apps = context.getPackageManager().queryIntentActivities(resolveIntent, 0); if(apps.size() > 0){ Iterator 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; } } }
  • TestPractice.zip (66.6 KB)
  • 下载次数: 4

你可能感兴趣的:(Android)