特定の顧客向けに非市場アプリケーションを開発しましたが、ユーザーは自分のデバイスで何もせず、私のアプリを使用する必要があるため、デバイスのパッケージ インストールをプログラムで無効にしてほしいとのことです。市場には、パッケージのインストールをパスワードで保護できるアプリケーションがいくつかありますが、私のアプリはパスワードを要求せずに更新を実行したり、アドオンをインストールしたりする必要があるため、自分でそれを行う必要があります。以下のインテント フィルターを使用してレシーバーを作成します。
<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{
}
}
}
どうすればそれを正しく行うことができますか? デバイスはルート化されていませんが、アプリの最初のインストールは自分で手動で行うため、機能をインストールするためのセキュリティ アラートを確認することは問題ありません。