2013-02-14 2 views
0

이 내 방송 수신기 COMPLETE 다운로드에에 충돌 :에다운로드 관리자는

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 [email protected] 
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) 
+0

Environment.getExternalStorageDirectory(). getAbsolutePath() + "/media/video.mp4"디버깅을 시도하여 정확한 경로가 반환되는지 확인 했습니까? –

+0

예, 광고를 "file : //"해야했습니다. 이제는 맞습니다. 하지만 또 다른 문제가 있습니다. 내 질문 –

답변

0

이 라인을 댓글을 작동했다 :

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

+0

을 편집하게 된 이유는 무엇입니까? – joseRo