显示cordova本地通知中的进度条 [英] display progress bar in cordova local notification

查看:929
本文介绍了显示cordova本地通知中的进度条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用这个精彩的插件 https://github.com/katzer/cordova-plugin - 本地通知在下载文件时实现本地通知。我找不到如何在通知中显示进度条,如在本机 http://javatechig.com/wp-content/uploads/2014/05/Displaying-Progress-Notification-in-Android-Example.png

解决方案

使用插件 cordova-file-Transfer 并进行以下更改: / p>

您可以为Android平台更改插件。



创建类 FileProgressBarTask 与以下代码:

  package org.apache.cordova.filetransfer; 

import android.app.NotificationManager;
import android.os.AsyncTask;
import android.support.v4.app.NotificationCompat;
import android.util.Log;

class FileProgressBarTask extends AsyncTask< Void,Integer,Integer> {

private NotificationCompat.Builder mBuilder;
private NotificationManager mNotificationManager;
int id = 0;
int progress = 0;

FileProgressBarTask(NotificationCompat.Builder mBuilder,NotificationManager mNotificationManager,int id){

Log.d(TAG,Progress Bar);

this.mBuilder = mBuilder;
this.mNotificationManager = mNotificationManager;
this.id = id;

super.execute();
}

@Override
protected void onPreExecute(){
super.onPreExecute();

mBuilder.setProgress(150,0,false);
mNotificationManager.notify(id,mBuilder.build());
}

@Override
protected void onProgressUpdate(Integer ... values){
mBuilder.setProgress(150,values [0],false);
mNotificationManager.notify(id,mBuilder.build());
super.onProgressUpdate(values);
}

@Override
protected Integer doInBackground(Void ... params){
return null;
}

@Override
protected void onPostExecute(Integer result){
super.onPostExecute(result);
mBuilder.setContentText(DownloadConcluído);

mBuilder.setProgress(0,0,false);
mNotificationManager.notify(id,mBuilder.build());
}
}

更改类 FileTransfer 与下面的代码:

  import android.content.res.Resources; 
import android.content.Context;
import android.app.NotificationManager;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.Builder;

在类 FileTransfer

 上下文contextApplication = cordova.getActivity()。getApplicationContext 
资源resources = contextApplication.getResources();
String pkgName = contextApplication.getPackageName();

int resId = resources.getIdentifier(ic_action_download,drawable,pkgName);

mNotificationManager =(NotificationManager)cordova.getActivity()。getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(cordova.getActivity());
mBuilder.setContentTitle(Download File)
.setContentText(Progress)
.setSmallIcon(resId);

final FileProgressBarTask progressBarTask = new FileProgressBarTask(mBuilder,mNotificationManager,id);

查找包含以下内容的方法下载的块代码: while progress.setLoaded(inputStream.getTotalRawBytesRead()); 在方法下载时,插入以下代码:

  long lng = Math.abs(progress.getLoaded()/ 100)/ 100); 
progressBarTask.onProgressUpdate(Integer.parseInt(String.valueOf(lng)));

基于:




i use this great plugin https://github.com/katzer/cordova-plugin-local-notifications to implement local notification when downloading a file. i don't find how to display a progress bar in the notification like in native one http://javatechig.com/wp-content/uploads/2014/05/Displaying-Progress-Notification-in-Android-Example.png can you help?

解决方案

Use plugin cordova-file-Transfer and make the following changes:

You can change the plugin this way for android platform.

Create class FileProgressBarTask with bellow code:

package org.apache.cordova.filetransfer;

import android.app.NotificationManager;
import android.os.AsyncTask;
import android.support.v4.app.NotificationCompat;
import android.util.Log;

class FileProgressBarTask extends AsyncTask<Void, Integer, Integer> {

    private NotificationCompat.Builder mBuilder;
    private NotificationManager mNotificationManager;
    int id = 0;
    int progress = 0;

    FileProgressBarTask(NotificationCompat.Builder mBuilder, NotificationManager mNotificationManager, int id){

        Log.d("TAG", "Progress Bar");

        this.mBuilder = mBuilder;
        this.mNotificationManager = mNotificationManager;
        this.id = id;

        super.execute();
    }

    @Override
    protected void onPreExecute(){
        super.onPreExecute();

        mBuilder.setProgress(150, 0, false);
        mNotificationManager.notify(id, mBuilder.build());
    }

    @Override
    protected void onProgressUpdate(Integer... values){
        mBuilder.setProgress(150, values[0], false);
        mNotificationManager.notify(id, mBuilder.build());
        super.onProgressUpdate(values);
    }

    @Override
    protected Integer doInBackground(Void... params) {
        return null;
    }

    @Override
    protected void onPostExecute(Integer result){
        super.onPostExecute(result);
        mBuilder.setContentText("Download Concluído");

        mBuilder.setProgress(0, 0, false);
        mNotificationManager.notify(id, mBuilder.build());
    }
}

Change class FileTransfer with bellow code:

import android.content.res.Resources;
import android.content.Context;
import android.app.NotificationManager;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.Builder;

On the line ~700 in method download on class FileTransfer:

Context contextApplication = cordova.getActivity().getApplicationContext();
Resources resources = contextApplication.getResources();
String pkgName = contextApplication.getPackageName();

int resId = resources.getIdentifier("ic_action_download", "drawable", pkgName);

mNotificationManager = (NotificationManager) cordova.getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(cordova.getActivity());
mBuilder.setContentTitle("Download File")
        .setContentText("Progress")
        .setSmallIcon(resId);

final FileProgressBarTask progressBarTask = new FileProgressBarTask(mBuilder, mNotificationManager, id);

Find the block code on the method download that contains: while and progress.setLoaded(inputStream.getTotalRawBytesRead()); on method download, insert bellow code:

long lng = Math.abs((progress.getLoaded() / 100) / 100);
progressBarTask.onProgressUpdate(Integer.parseInt(String.valueOf(lng)));

Based on:

这篇关于显示cordova本地通知中的进度条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆