首をかしげる問題に直面しており、解決できません。ここで誰か助けてくれませんか...
別のアクティビティ (子) を開始する 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)