я следующий вещательный приемник, чтобы захватить событие, когда пользователь выполнить удаление приложения на устройстве, технически, я получаю намерения с действием ACTION_PACKAGE_REMOVED:получить имя пакета (приложение) версии при удалении его
public class appUninstallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
if (intent != null) {
if (intent.getAction().equals(intent.ACTION_PACKAGE_REMOVED)) {
try {
String packageName = intent.getData().toString();
//Logcat shows the packageName is "com.XXX.YYY"
Log.v("debug",packageName);
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(packageName, 0);
//Got NameNotFoundException
Log.v("debug",packageInfo.versionName);
}catch(NameNotFoundException e){
e.printStackTrace();
}
}
}
}
}
Значение выше приемник работает хорошо, за исключением того, что при попытке извлечь имя версии деинсталлирующего приложения (пакета) с packageInfo.versionName
, NameNotFoundException растет.
packageName
У меня есть «com.XXX.YYY», который является именно именем пакета приложения, которое я деинсталлирую. Но почему я не могу получить имя версии с вышеуказанным кодом?
(Кстати, выше приемник запускается при запуске приложения деинсталляция, это потому, что система уже удалены метаданные перед началом удаления?)
Документ говорит: «Существующий пакет приложений был удален с устройства». Вероятно, поэтому причина NameNotFoundException возрастает. – Y2i
Можете ли вы показать мне, как вы снимаете событие удаления, пожалуйста. Мне нужно это – Rauf