我有一個廣播接收器,它獲取「android.intent.action.PACKAGE_ADDED」和「android.intent.action.PACKAGE_REPLACED」意圖(所以當一個包安裝在手機上時,我的應用程序獲取包名稱的意圖)。但是,當我嘗試使用PackageManager通過包名獲取PackageInfo時,它拋出了一個NameNotFoundException。找不到包管理器的包名
這可能是什麼原因(除了包不存在,顯然不是這種情況)?我無法找到許多權限 - 是否有一個我錯過了導致誤導性錯誤?
try {
id = UAppIDUtils.GetUAppID(ctx.getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES));
} catch (NameNotFoundException e) {
id = null;
Log.v(TAG, "Error finding package info");
e.printStackTrace();
}
ctx是上下文; pkgName是包名。
你表現出什麼樣子?嘗試將以下行添加到意圖過濾器以查看是否有任何區別: '' 建議在[此示例代碼](http://developer.android .com/resources/faq/framework.html#7)並在[此處]提到過(http://stackoverflow.com/questions/3510544/android-how-to-intercept-the-install-application-intent)。 –
是的,在那裏 - 我得到(至少看起來像什麼)的包名稱很好,但它沒有找到剛剛發送到我的應用程序的名稱已被安裝。超級難住這一個。 – Michelle
那麼,我能想到的唯一的其他原因是包名缺少一些東西 - 我們現在不要假設 - 或者對PackageManager的getApplicationInfo()方法的調用不應該是什麼 - 例如,該方法採用的標誌作爲第二個參數。你能否複製你的有關代碼的一部分? –