我有一個應用程序正在保存安裝在設備上的內部開發的應用程序的日誌。在安裝了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 2013-09-26 20:44:45