4

特定の顧客向けに非市場アプリケーションを開発しましたが、ユーザーは自分のデバイスで何もせず、私のアプリを使用する必要があるため、デバイスのパッケージ インストールをプログラムで無効にしてほしいとのことです。市場には、パッケージのインストールをパスワードで保護できるアプリケーションがいくつかありますが、私のアプリはパスワードを要求せずに更新を実行したり、アドオンをインストールしたりする必要があるため、自分でそれを行う必要があります。以下のインテント フィルターを使用してレシーバーを作成します。

<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{

           }
          }
         }

どうすればそれを正しく行うことができますか? デバイスはルート化されていませんが、アプリの最初のインストールは自分で手動で行うため、機能をインストールするためのセキュリティ アラートを確認することは問題ありません。

4

0 に答える 0