Как я могу обнаружить удаление определенного пакета в Android? - PullRequest
2 голосов
/ 25 марта 2012

Можно ли обнаружить удаление определенного приложения в android? Если да, то как? это мой код, который обнаруживает удаление любого пакета, как я могу изменить его, чтобы обнаружить желаемое приложение?

import android.content.*;
import android.util.Log;

public class PackageChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
if(intent.getAction().equals("android.intent.action.PACKAGE_REMOVED"))   {Log.i("action","the package is removed");}
}
}

и это манифест

<receiver android:name="PackageChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>

1 Ответ

6 голосов
/ 25 марта 2012

Я не думаю, что вы можете фильтровать широковещательные рассылки по конкретному имени пакета. Тем не менее, вы можете получить (и затем протестировать) имя пакета достаточно легко при получении трансляции:

Uri uri = intent.getData();
String pkg = uri != null ? uri.getSchemeSpecificPart() : null;

(Есть хороший пример класса, PackageMonitor , на DevDaily.com , который был моим источником для фрагмента кода выше.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...