Android: 如何检测主播应用是否被删除?
Android: How to detect if a broadcaster application is deleted?
我有 2 个应用程序。其中一个正在连续广播自定义字符串,另一个正在接收。当广播应用程序被删除时,我必须得到通知并删除接收应用程序中的一些数据。有没有像 onDelete() 之类的方法?我该怎么做?
是啊!有一个名为 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>
然后需要创建上面提到的class
public class UninstallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getData().getSchemeSpecificPart() == "com.arjnklc.broadcasterapp")
cleanUpEverything();
}
}
不确定你想什么时候做,但据我了解,你想让你的第二个应用程序知道第一个应用程序何时被删除?
如果是这样,请执行以下操作:
在 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。它不能与任何其他 Receiver 结合使用,否则其他操作将停止工作。
希望这有效。
我有 2 个应用程序。其中一个正在连续广播自定义字符串,另一个正在接收。当广播应用程序被删除时,我必须得到通知并删除接收应用程序中的一些数据。有没有像 onDelete() 之类的方法?我该怎么做?
是啊!有一个名为 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>
然后需要创建上面提到的class
public class UninstallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getData().getSchemeSpecificPart() == "com.arjnklc.broadcasterapp")
cleanUpEverything();
}
}
不确定你想什么时候做,但据我了解,你想让你的第二个应用程序知道第一个应用程序何时被删除?
如果是这样,请执行以下操作:
在 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。它不能与任何其他 Receiver 结合使用,否则其他操作将停止工作。
希望这有效。