通知

时间:2017-06-21 06:19:01

标签: android file-manager

我正在从URL下载文件,并且我希望在通知下载完成时打开我的文件管理器。这样用户就可以单击通知并从文件管理器中打开文件。当我点击我的通知时它什么也没做。我是android的初学者,所以没有那么多的知识,任何人都可以帮我解决这个问题。

这是我的代码。

public class DownloadFileFromURL extends AsyncTask<String, String, String> {

private static final String LOG_TAG = "Directory";
Context context;
ProgressDialog pDialog;
Activity activity;
NotificationManager mNotifyManager;
Builder mBuilder;
int id=1;
String fileName;

public DownloadFileFromURL(Context context){
    this.context = context;
}

/**
 * Before starting background thread
 * */
@Override
protected void onPreExecute() {
    super.onPreExecute();

    ((Activity)context).runOnUiThread( new Runnable() {
        public void run() {
            pDialog = new ProgressDialog(context);
            pDialog.setMessage("Downloading...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
            mNotifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
                mBuilder = new android.support.v7.app.NotificationCompat.Builder(context);
                mBuilder.setContentTitle("Assignment")
                        .setContentText("Download in progress").setSmallIcon(R.drawable.download);
                mBuilder.setProgress(0, 0, false);
                mNotifyManager.notify(id, mBuilder.build());

        }
    });

}
@Override
protected void onProgressUpdate(String... values) {
    mBuilder.setProgress(100, Integer.parseInt(values[0]), false);
    mNotifyManager.notify(id, mBuilder.build());
    super.onProgressUpdate(values);
}
/**
 * Downloading file in background thread
 * */

@Override
protected String doInBackground(String... f_url) {
    int count;
    try {
       String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
        File myDir = new File(root + "/saved_assignments");

        URL url = new URL(f_url[0]);
        URLConnection conection = url.openConnection();
        conection.connect();

        String raw = conection.getHeaderField("Content-Disposition");

        fileName = raw.replaceFirst("(?i)^.*filename=\"([^\"]+)\".*$", "$1");
        if(fileName.contains("=")){
            int counter=0;String str="";
            for(int i=0; i<fileName.length();i++){
                if(fileName.charAt(i)=='='){
                    counter = 1;
                }else if(counter==1){
                    str =str + fileName.charAt(i);
                }
            }
            fileName = str ;
        }

        String PATH = Environment.getExternalStorageDirectory().toString()+ "/saved_assignments/";
        File folder = new File(PATH);
        if(!folder.exists()){
            folder.mkdir();//If there is no folder it will be created.
        }

        String file = PATH+fileName;
        File fileNew = new File(file);
        try {
            fileNew.createNewFile();
        } catch (IOException e) {
            Log.e(LOG_TAG, "Directory not created");

        }

        // input stream to read file - with 8k buffer
        InputStream input = new BufferedInputStream(url.openStream());

        // Output stream to write file

        OutputStream output = new FileOutputStream(fileNew);
        byte data[] = new byte[1024];

        long total = 0;
        while ((count = input.read(data)) != -1) {
            total += count;

            // writing data to file
            output.write(data, 0, count);

        }

        // flushing output
        output.flush();

        // closing streams
        output.close();
        input.close();

    } catch (Exception e) {
        Log.e("Error: ", e.getMessage());
    }

    return null;
}

/**
 * After completing background task
 * **/
@Override
protected void onPostExecute(String file_url) {
    Toast.makeText(context,"Assignment saved in downloads",Toast.LENGTH_SHORT).show();
    mBuilder.setContentText("Download complete");
    // Removes the progress bar
    mBuilder.setProgress(0, 0, false);
    mNotifyManager.notify(id, mBuilder.build());
    pDialog.hide();
}
}

1 个答案:

答案 0 :(得分:0)

试试这个:

private NotificationManager mNotifyManager;
private NotificationCompat.Builder mBuilder;
Notification noti;
int nid = 1;
String path;
mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
File file = new File("Your File PATH"); //
intent.setDataAndType(Uri.fromFile(file), "*/*"); //
PendingIntent pIntent = PendingIntent.getActivity(activity.this, 0, intent, 0);
mBuilder = new NotificationCompat.Builder(activity);
mBuilder.setContentTitle("Download")
        .setContentText("Download in progress")
        .setSmallIcon(R.mipmap.alogo)
        .setContentIntent(pIntent);
mNotifyManager.notify(nid, mBuilder.build());