以编程方式禁用包安装

时间:2012-05-15 07:55:44

标签: android broadcastreceiver package

我为特定客户开发了一个非市场应用程序,他们希望我以编程方式禁用设备的软件包安装,因为用户不会对他们的设备做任何事情,而是使用我的应用程序。 市场上有一些应用程序能够密码保护软件包的安装,但我需要自己,因为我的应用程序需要运行更新或安装插件而不提示输入密码。 我用下面的intent过滤器构建了一个接收器:

<intent-filter>     
    <action android:name="android.intent.action.PACKAGE_INSTALL"/>
 </intent-filter>

但是这将在安装软件包之后开始,而不是之前。

我也尝试在启动程序包时接收广播,以便捕获com.android.packageinstaller的启动,但是我没有找到一种方法来重新启动程序包,也没有能够杀死程序包,如果我的申请不是启动程序。 我试过这个:

ActivityManager servMng = (ActivityManager)context.getApplicationContext().getSystemService(context.ACTIVITY_SERVICE);

         List<ActivityManager.RunningAppProcessInfo> list =servMng.getRunningAppProcesses();
         if(list != null){
          for(int i=0;i<list.size();++i){
           if("com.android.packageinstaller".matches(list.get(i).processName)){
            int pid = android.os.Process.getUidForName("com.android.packageinstaller");
                  android.os.Process.killProcess(pid);
           }else{

           }
          }
         }

我怎么能正确地做到这一点? 设备未植根,但我的应用程序的第一次安装是由我自己手动完成的,确认安装该功能的安全警报是没有问题的。

0 个答案:

没有答案