У меня есть 2 приложения. Один из них постоянно транслирует настраиваемые строки, а другой получает. Я должен быть уведомлен и удалить некоторые данные в приложении приемника, когда приложение телевещателя будет удалено. Есть ли метод, например onDelete() или что-то в этом роде? Как я могу это сделать?Android: Как определить, удалено ли приложение вещателя?
0
A
ответ
1
Да! Есть намерение под названием ACTION_PACKAGE_REMOVED, которое вы можете прослушать.
Добавить это внутри <application>
в манифесте: (не забудьте изменить имя пакета)
<receiver android:name="com.arjnklc.receiverapp.UninstallReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package" />
</intent-filter>
</receiver>
Затем вам нужно создать класс, упомянутых выше.
public class UninstallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getData().getSchemeSpecificPart() == "com.arjnklc.broadcasterapp")
cleanUpEverything();
}
}
0
Не совсем уверен, когда вы хотите делать, но из того, что я понимаю, вы хотите, чтобы ваше второе приложение узнало, когда первое приложение удалено?
Если это так, то это сделать:
В AndroidManifest.xml, вы должны иметь новый BroadcastReceiver
, потому что этот приемник используется другая схема данных:
<receiver
android:name=".PackageReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
Тогда ваш BroadcastReceiver
:
public class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_PACKAGE_REMOVED)) {
Log.d(TAG, "ACTION_PACKAGE_REMOVED");
String data = intent.getData().toString();
// data string has the package name
// if that is your package name, your first app was uninstalled
}
}
}
Просто убедитесь, что это отдельный BroadcastReceiver. Он не может быть объединен с каким-либо другим получателем или другие действия перестанут работать.
Надеюсь, что это сработает.