【问题标题】:Download manager crashes on On DOWNLOAD COMPLETE下载管理器在下载完成时崩溃
【发布时间】:2013-02-14 12:58:28
【问题描述】:

这是我的广播接收器:

 BroadcastReceiver broadcast = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
            dwnId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0);
            Cursor c = DownloadManagerWrapper.getInstance(getActivity()).getDownloadManager().query(new DownloadManager.Query().setFilterById(dwnId));
            c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
        } else {
            Toast.makeText(getActivity(), "ERROR!", Toast.LENGTH_SHORT).show();
        }

    }
};

在我的 onCreateView 我注册它:

(getActivity()).registerReceiver(broadcast, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

这就是我的 DownloadManagerWrapper 的样子:

public class DownloadManagerWrapper {
private static final String DOWNLOAD_SERVICE = "download";

private DownloadManager mgr;

private static DownloadManagerWrapper i;

private DownloadManagerWrapper(Context c) {
    mgr = (DownloadManager) c.getSystemService(DOWNLOAD_SERVICE);
}

public static DownloadManagerWrapper getInstance(Context c) {
    if (i == null) {
        i = new DownloadManagerWrapper(c);
    }
    return i;
}

public DownloadManager getDownloadManager() {
    return mgr;
}

}

这就是我所做的使它成为FC的原因:

 if(Util.hasNetworkConnection(ctx)){
        Uri destination = Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath() + "/media/video.mp4");
        DownloadManagerWrapper.getInstance(ctx).getDownloadManager().enqueue(new DownloadManager.Request(uri).setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE).setAllowedOverRoaming(false).setDestinationUri(destination));
    }else{
        Toast.makeText(ctx, "No Internet Available!!", Toast.LENGTH_SHORT).show();
    }

我收到此错误:

02-14 15:57:03.488: E/AndroidRuntime(4987): FATAL EXCEPTION: main
02-14 15:57:03.488: E/AndroidRuntime(4987): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE flg=0x10 pkg=com.Red.medicalpaint (has extras) } in com.Red.Fragments.AppLibraryFragment$1@41a1f998
02-14 15:57:03.488: E/AndroidRuntime(4987):     at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:765)
02-14 15:57:03.488: E/AndroidRuntime(4987):     at android.os.Handler.handleCallback(Handler.java:615)
02-14 15:57:03.488: E/AndroidRuntime(4987):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-14 15:57:03.488: E/AndroidRuntime(4987):     at android.os.Looper.loop(Looper.java:137)
02-14 15:57:03.488: E/AndroidRuntime(4987):     at android.app.ActivityThread.main(ActivityThread.java:4978)
02-14 15:57:03.488: E/AndroidRuntime(4987):     at java.lang.reflect.Method.invokeNative(Native Method)

【问题讨论】:

  • 你试过调试Environment.getExternalStorageDirectory().getAbsolutePath() + "/media/video.mp4" 看看是否返回正确的路由?
  • 是的,我必须添加一个“file://”。现在它是正确的。但我还有另一个问题。我现在将编辑我的问题

标签: android file download uri download-manager


【解决方案1】:

评论这一行,让它工作:

c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));

【讨论】:

    猜你喜欢
    • 2014-02-23
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2020-04-21
    • 2015-09-05
    • 1970-01-01
    相关资源
    最近更新 更多