Android - Obter o título e a descrição do BroadcastReceiver
-
22-12-2019 - |
Pergunta
Eu estou trabalhando em um aplicativo android.
Eu estou usando BroadcastReciever para obter o sei quando um download é concluído.
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(urlString));
request.setDescription(artistString);
request.setTitle(titleString);
// in order for this if to run, you must use the android 3.2 to compile your app
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC + "/Tunesto", titleString + " - " + artistString + ".mp3");
Toast.makeText(mainContext, "Downloading " + titleString + " - " + artistString, Toast.LENGTH_SHORT).show();
// get download service and enqueue file
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
Então eu uso isso no meu método onCreate para mostrar um brinde quando o download terminou:
onComplete = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String info = "";
info = info + " - " + intent.getStringExtra(DownloadManager.COLUMN_DESCRIPTION);
info = info + " - " + intent.getStringExtra(DownloadManager.COLUMN_TITLE);
info = info + " - " + intent.getStringExtra(DownloadManager.COLUMN_ID);
info = info + " - " + intent.getStringExtra(DownloadManager.COLUMN_LOCAL_FILENAME);
info = info + " - " + intent.getStringExtra(DownloadManager.COLUMN_MEDIA_TYPE);
info = info + " - " + intent.getStringExtra(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);
info = info + " - " + intent.getDataString();
info = info + " - " + intent.getType();
info = info + " - " + intent.EXTRA_TITLE;
info = info + " - " + intent.EXTRA_TEXT;
//Toast.makeText(mainContext, Integer.valueOf(dlCount) + " Download \"" + titleString + " - " + artistString + "\" completed", Toast.LENGTH_LONG).show();
Toast.makeText(mainContext, info + "Download completed", Toast.LENGTH_LONG).show();
}
};
registerReceiver(onComplete, new IntentFilter(
DownloadManager.ACTION_DOWNLOAD_COMPLETE));
Como você pode ver, eu já tentei de tudo para obter a descrição e o título as informações de seqüência de caracteres, mas ele não vai mostrar nada mais do que nulo (o brinde mostra algo como ...
Você pode por favor me dar uma dicas sobre como obter essas informações?
Solução
Você pode por favor me dar uma dicas sobre como obter essas informações?
Leia no valor para EXTRA_DOWNLOAD_ID
, chamando getLongExtra()
sobre a transmissão de Intent
.Em seguida, use o que com DownloadManager.Query
para obter os dados para este download.O Cursor
você voltar da chamada query()
no DownloadManager
irá conter valores introduzidos pelo COLUMN_
constantes.
Este post de blog tem código de exemplo que ilustra esse processo.