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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top