android 通知

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 通知相关的知识,希望对你有一定的参考价值。

声明:

//通知管理器
private NotificationManager nmanager;
// 统治构造器
private Notification.Builder builder ;

 

通知初始化

 

  /**
     *通知初始化
     */
    private void getNotification() {
     //通知管理器 nmanager = (NotificationManager) getSystemService(
      Context.NOTIFICATION_SERVICE);//系统通知
     //通过构造器设置通知的标题和内容 builder = new Notification.Builder(getApplicationContext()); builder.setSmallIcon(R.drawable.ic_launcher); builder.setTicker("通知来了");//提示标题 builder.setContentTitle("下载"); //通知内容标题 builder.setContentText("正在下载。。。。。");//通知内容 }

 

通知进度更新

/**
     * 更新UI
     */
    private Handler handler = new Handler() {
        public void handleMessage(Message msg) {//接收线程发送来的消息
            //更新UI
            builder.setProgress(100, msg.arg1, false);
       //1001是该通知的唯一编号,可以调用nmanager.cancel(1001);注销这个通知 nmanager.notify(
1001, builder.build()); if(msg.what == 1){ //下载完成 String name = uri.split("/")[-1]; builder.setContentTitle(name); builder.setContentText("下载完成"); Toast.makeText(getApplicationContext(), "下载完成", 1).show(); } } };
/**
     *  下载放在线程中执行,
     *  
     */
    public class MyRunnable implements Runnable {
        @Override
        public void run() {
            //读取的数据存储
            byte[]  result = null;
            HttpClient client = new DefaultHttpClient();
            try {
                Log.i("tag", "uri>>"+uri);
                HttpGet get = new HttpGet(uri);
                HttpResponse response = client.execute(get);
                HttpEntity entity = response.getEntity();
                int stateCode = response.getStatusLine().getStatusCode();
                if(stateCode != 200){
                    Log.i("tag", stateCode+"-->下载失败-->");
                }
                //获取网络输入流
                InputStream in = entity.getContent();
                //获取网路数据总长度
                long total  = entity.getContentLength();
                byte[] bs = new byte[256];
                int len_per = 0;//每次读取的长度,
                ByteArrayOutputStream baos = new  ByteArrayOutputStream();
                int readedLen = 0;//已经读取的数据量
                while((len_per = in.read(bs)) != -1){
                    baos.write(bs, 0, len_per);
                    readedLen += len_per;
                    int progress = (int) ((readedLen*100)/(float)total);
                    Message msg = Message.obtain();
                    msg.arg1 = progress;
                    handler.sendMessage(msg);
                }
                result = baos.toByteArray();
                handler.sendEmptyMessage(1);
            }catch(Exception e){
                e.printStackTrace();
            }finally {
                if(client != null){
                    client.getConnectionManager().shutdown();
                }
            }
        }
    }

 

以上是关于android 通知的主要内容,如果未能解决你的问题,请参考以下文章

Android 错误从通知转到片段

当通知进入android时如何获取Bundle数据

Android 通知导航到现有活动

从通知导航到带有 NavController 的片段

android - 离开应用程序时保持谷歌地图片段在位置上放大

推送通知停止在parse.com android项目中工作