![](/img/trans.png)
[英]Broadcast can not receive package_removed event after registered staticly in Manifest
[英]How can I stop a DownloadManager after uninstall? Broadcast receiver for Package_removed doesn't work
我有以下广播接收器:
public class UninstallReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
String action = intent.getAction();
Log.i("UninstallReceiver", "---------------------> onUNINSTALL():" + action);
DownloadManager dm = (DownloadManager) context.getSystemService(Activity.DOWNLOAD_SERVICE);
VideoDataDAO videosDao = VideoDataDAO.getInstance(context);
final List<VideoData> undownloaded_new_videos = videosDao.getUndownloadedVideosFromDB();
if (undownloaded_new_videos.size() > 0) {
long[] videos = new long[undownloaded_new_videos.size()];
for (int i = 0; i < undownloaded_new_videos.size(); i++) {
videos[i] = undownloaded_new_videos.get(i).getId();
Log.i("UninstallReceiver", "---------------------> onUNINSTALL():" + videos[i]);
}
if (videos != null) {
Log.i("UninstallReceiver", "---------------------> != null: " + Arrays.toString(videos));
dm.remove(videos);
}
}
final List<VideoData> redownloadVideos = videosDao.redownloadVideosFromDB();
if (redownloadVideos.size() > 0) {
long[] videos = new long[redownloadVideos.size()];
for (int i = 0; i < redownloadVideos.size(); i++) {
videos[i] = redownloadVideos.get(i).getId();
Log.i("UninstallReceiver", "---------------------> onUNINSTALL():" + videos[i]);
}
if (videos != null) {
Log.i("UninstallReceiver", "---------------------> != null2");
dm.remove(videos);
}
}
}
}
它在我的清单中这样声明:
<receiver android:name=".receivers.UninstallReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
现在的问题是,当我卸载应用程序时,不会调用广播接收器,然后我的应用程序会继续通过DownloadService下载视频。 如何使其识别我的卸载接收器? 奇怪的是,如果不是卸载,而是从Eclipse部署我的应用程序到已经安装的应用程序上(这将卸载当前应用程序,上传新的apk并安装它,这将称为卸载Receiver)。
我把这个:
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />
但是随后我不得不更改皮棉设置,以将其声明为警告而不是错误的方式,这样我才能构建该应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.