デバイスにインストールされた内部で開発されたアプリケーションのログを保持しているアプリケーションがあります。インストール時にIntent.PACKAGE_ADDEDのための放送受信機が起動し、次のコードを使用して、パッケージ名が記録されていますIntent.ACTION_PACKAGE_REMOVEDを使用してアンインストールされたパッケージ名の検索方法
public class NewInstallReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
int uid = b.getInt(Intent.EXTRA_UID);
String[] packages = context.getPackageManager().getPackagesForUid(uid);
ApplicationService appService = new ApplicationService(context);
appService.ApplicationInstalled(packages);
}
}
Intent.PACKAGE_REMOVED、パッケージへのすべての参照のための放送受信機を使用しているとき、私が直面してる問題がありますユニークなId(UID)を介してヌル情報が返されます(既にアンインストールされているため、期待通りです)。その間は一時的な解決策がありますが、それほどエレガントではなく、次のバージョンではよりクリーンなコードを作りたいと思います。コードが動作するはずです方法の例:
public class RemoveApplicationReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
int uid = b.getInt(Intent.EXTRA_UID);
String[] packages = context.getPackageManager().getPackagesForUid(uid);
ApplicationService appService = new ApplicationService(context);
appService.ApplicationRemoved(packages);
}
}
ので復習に、質問は次のとおりです。
プログラムが削除された後にどのように、私はテントのための放送受信機にパッケージ名を参照することができます。 PACKAGE_REMOVED。
おかげ
getPackagesForUid(uid)からもnullが返されています。私が望むのは、現在のユーザー用にインストールされたすべてのパッケージのリストを取得することです。誰かが何らかの入力を提供できますか? – Pratik