我有2个申请。其中一个是连续播放自定义字符串,另一个正在接收。在删除广播应用程序时,我必须收到通知并删除接收器应用程序中的一些数据。是否有像onDelete()之类的方法?我怎么能这样做?
答案 0 :(得分: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();
}
}
答案 1 :(得分: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。它不能与任何其他Receiver结合使用,否则其他操作将停止工作。
希望这有效。