从子活动调用时,下载管理器崩溃

时间:2013-08-07 11:29:03

标签: android android-download-manager childactivity

我正面临一个棘手的问题,无法解决。这里有人可以帮忙......

我有一个活动(父母)开始另一个活动(孩子)。我正在从子活动开始下载管理器。当我单击子活动上的按钮以查看DOWNLOADS时,它会打开DOWNLOAD管理器并显示下载。直到这一点,一切都很顺利。但是当我按下返回键从这个下载视图窗口返回时,大部分时间它都会崩溃(特别是在下载完成时)。不知道为什么..

注意:当我从父活动启动下载管理器时,一切正常。但我需要从孩子那里做到这一点。任何帮助将不胜感激。

我正在开始儿童活动,如:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> p, View v, int position, long id) {
    Intent i = new Intent(AudioDownloadActivity.this,CDPageActivity.class);
    i.putExtra("audioCDURL", "http://bkdrluhar.com/00-htm/" + hiddenText);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    AudioDownloadActivity.this.startActivity(i);
}});

在Child活动中,为下载管理器定义和启动广播接收器,如:

private long enqueue;
private DownloadManager dm;
/*some code */
BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
            Query query = new Query();
            query.setFilterById(enqueue);
            Cursor c = dm.query(query);
            if (c.moveToFirst()) {
                int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
                if (DownloadManager.STATUS_SUCCESSFUL == c.getInt(columnIndex)) {
                }
            }
        }
    }
};
registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

/*some code */
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request request = new Request(Uri.parse(downloadURL));
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
    .setAllowedOverRoaming(true).setTitle("BK Asset")
    .setDescription(tempFile)
    .setDestinationUri(Uri.fromFile(new File(MainActivity.downloadFileLocation,tempFile)));        
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
enqueue = dm.enqueue(request);  

按下弹出的按钮会显示下载:

public void onAudioCDDownloadClick(View v){
    Intent i = new Intent();
    i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
    startActivity(i);       
}

此崩溃的日志猫是:

FATAL EXCEPTION: main                                                                                                                                                                                             
java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE flg=0x10 pkg=com.os.bkdownloader (has extras) } in com.os.bkdownloader.AudioDownloadActivity$1@416b8ad8
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:737)                                                                                                                                      
    at android.os.Handler.handleCallback(Handler.java:605)                                                                                                                                                        
    at android.os.Handler.dispatchMessage(Handler.java:92)                                                                                                                                                        
    at android.os.Looper.loop(Looper.java:137)                                                                                                                                                                    
    at android.app.ActivityThread.main(ActivityThread.java:4517)                                                                                                                                                  
    at java.lang.reflect.Method.invokeNative(Native Method)                                                                                                                                                       
    at java.lang.reflect.Method.invoke(Method.java:511)                                                                                                                                                           
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:995)                                                                                                                            
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)                                                                                                                                               
    at dalvik.system.NativeStart.main(Native Method)                                                                                                                                                              
Caused by: java.lang.NullPointerException                                                                                                                                                                         
    at com.os.bkdownloader.AudioDownloadActivity$1.onReceive(AudioDownloadActivity.java:158)                                                                                                                      
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728)                                                                                                                                      

0 个答案:

没有答案