Android 启动程序

如何在自己的程序中启动别的程序呢?一般来说,有两种方式。一是用intent启动,二是命令行启动。现在我们来浅谈下两种启动方式。

 

环境:

         (1) android 2.3.3

         (2) 已取得root权限

         (3) 我是想在一个service里启动一个其他程序。

一 intent启动方式

    启动一个android程序,必须得到程序的包名和要启动的入口activity名。

    取得activity名的代码如下所示(pkgname为想要启动的程序的包名,如何得到包名的方法在这就不介绍了,google之):

 

    <textarea cols="50" rows="15" name="code" class="java">public static String getActivityName(Context context,String pkgname) { String activityname=""; PackageManager pm= context.getPackageManager(); //得到所有应用的包信息 List&lt;PackageInfo&gt; list =pm.getInstalledPackages(PackageManager.GET_ACTIVITIES); int length=list.size(); Log.d("pkg length",length+""); for(int i=0;i&lt;length;i++) { String name=list.get(i).packageName; Log.d("pkg "+i,name); if(name.equalsIgnoreCase(pkgname)) { ActivityInfo activityinfo=list.get(i).activities[0];//得到入口activity activityname=activityinfo.name; Log.d("activity "+i,activityname); } } return activityname; }</textarea>

    接下来,用一个线程来启动该程序的主activity,代码如下:

    <textarea cols="50" rows="15" name="code" class="java">Thread StartActivityThread = new Thread() { public void run() { String activityname=getActivityName(InstallAndUnistallService.this,pkgname); Log.d("###activityname",activityname); Intent i = new Intent(); i.setAction(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_LAUNCHER); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); i.setComponent(new ComponentName(pkgname, activityname)); startActivity(i); } }; StartActivityThread.start(); </textarea>

    成功!!

 

二 命令行启动方式

 

    网上查了下,命令行下用 

        # am start -n {包(package)名}/{包名}.{活动(activity)名称}

    启动程序。

 

    我写了一段代码来启动程序:

    <textarea cols="50" rows="15" name="code" class="java">try { Runtime.getRuntime().exec("am start -n " +pkgname+"/"+pkgname+"."+activityname); Log.d("open", "success!!!!!!!!!"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.d("open","fail!!!!!!!!!"); } </textarea>

 

    失败!! 没有启动成功。现在还没有找到原因。

 

 

 

你可能感兴趣的:(thread,android,String,list,Google,service)