0

首をかしげる問題に直面しており、解決できません。ここで誰か助けてくれませんか...

別のアクティビティ (子) を開始する 1 つのアクティビティ (親) があります。そして、子アクティビティから Download Manager を開始しています。子アクティビティのボタンをクリックしてダウンロードを表示すると、ダウンロード マネージャーが開き、ダウンロードが表示されます。この時点まで、すべてがうまくいきます。しかし、この DOWNLOAD View Window から Return キーを押して戻ると、ほとんどの場合 (特にダウンロードが完了したとき) クラッシュします。なぜかわからない..

注: 親アクティビティから Download Manager を開始すると、すべて正常に動作します。しかし、私は子供からそれをする必要があります。どんな助けでも大歓迎です。

私は次のような子供の活動を始めています:

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 アクティビティでは、次のように Download Manager の Broadcast Receiver を定義して開始します。

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);       
}

このクラッシュのログ cat は次のとおりです。

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)                                                                                                                                      
4

0 に答える 0