我所擁有的是多個按鈕。使用if-else語句,我將文件下載到相應的按鈕。現在,我還定義了在if-else語句中通過意圖打開哪個類。我需要擁有它才能開始下載文件,然後開始新的活動。我曾經用AsyncTask做這件事,然後在onPostExecute中啓動新的意圖,但我決定最好使用DownloadManager。所以,你可能會感到困惑。所以,我會通過我的代碼,以便解釋...Android - 使用DownloadManager下載後的開始意向
,在這裏我設置了這一切:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
long downloadId = intent.getLongExtra(
DownloadManager.EXTRA_DOWNLOAD_ID, 0);
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)) {
String uriString = c
.getString(c
.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
}
}
}
}
};
registerReceiver(receiver, new IntentFilter(
DownloadManager.ACTION_DOWNLOAD_COMPLETE));
確定。現在,在我的if-else我聲明等於輸出文件的URL下載,以及設置字符串等於一個類,另一個字符串:
if (andy != null){
className = "com.cydeon.plasmamodz.Softkeys";
fileName = "batterymod.zip";
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Request req = new Request(
Uri.parse("https://dl.dropbox.com/s/gfukrwqy4xqrnj9/Android.zip"));
req.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,
fileName);
enqueue = dm.enqueue(req);
}
確定。所以一切正常。現在,我的秀下載:
public void showDownload(View view) {
Intent i = new Intent();
i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
startActivity(i);
好。現在,它下載。所以,現在這是下載,我需要開始一個新的活動。而且,我研究並嘗試了一些東西,但沒有任何工作。如你所見,我已經在字符串中設置了一個類。我有這樣的代碼,我在onPostExecute使用,所以我知道它工作正常:
try {
Intent openNewIntent = new Intent(Bmod.this, Class.forName(className));
startActivity(openNewIntent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
所以,我會重複我想要什麼。我想下載一個文件,然後在執行下載之後,開始一個新的活動。任何幫助是極大的讚賞。謝謝!
編輯 - 下面是一個更新的代碼:
public void showDownload(View view) {
Context context = getApplicationContext();
CharSequence text = "Download complete";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
try {
Intent openNewIntent = new Intent(Bmod.this, Class.forName(className));
startActivity(openNewIntent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
好的。我不希望它在開始課程之前等待下載完成。我希望它下載,而其他應用程序正在運行。 – user2182912 2013-03-28 02:29:26
好了,那麼不要做showDownload()就開始你的活動。下載完成後,DownloadManager將在後臺運行,並且您的接收器將被調用。您不必顯示下載以供下載。如果您啓動了DownloadManager.ACTION_VIEW_DOWNLOADS活動,那麼該活動將控制。 – 2013-03-28 02:32:45
好的。我會嘗試的。如果有效,我會接受你的答案。 :) 謝謝! – user2182912 2013-03-28 02:34:25