0

次の放送受信機があります。

 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 がアップロードされてインストールされます。これにより、アンインストール レシーバーが呼び出されます)。

4

1 に答える 1