Notification 模拟收到短信,数据下载的状态栏提示

Notification 模拟收到短信

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <Button
            android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="单击发送Notification信息"
            />
</LinearLayout>

功能代码实现

package com.ncsyeyy.YeyyNotificaton;


import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class MyActivity extends Activity implements OnClickListener {


    private Button btn;


    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findView();
        setOnClick();
    }
    private void findView(){
        btn = (Button) findViewById(R.id.btn);
    }


    private void setOnClick(){
        btn.setOnClickListener(this);


    }
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn:
                sendNotification();
                break;
        }


    }
    private void sendNotification(){
//        得到系统的Notification服务对象
        NotificationManager manager=(NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
//        创建一个Notification对象图标
        Notification notification=new Notification();
//        设置显示的Notification对象图标
        notification.icon=R.drawable.ic_launcher;
//        设置显示Notification对象的内容
        notification.tickerText="您有一条新的短信!";
//        设置显示Notification对象的声音模式
        notification.audioStreamType= AudioManager.ADJUST_LOWER;
//        定义单击Notification的事件Intent
        Intent intent=new Intent(this,MyActivity.class);
        PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT);


//        单击状态栏的图标出现的提示信息设置
        notification.setLatestEventInfo(this,"短信提示内容","我是一个短消息,愚人节快乐!",pendingIntent);
//        发送pendingIntent消息
        manager.notify(1,notification);
    }


}


Notification数据下载的状态栏提示

思路:
第一:定义布局按钮
第二:定义消息通知的布局,进度条显示
第三:代码实现
监听按钮
得到NotificationManager的服务对象
初始化并得到Notification的视图对象,设置progressBar对象
定义单击通知事件。取消事件


第一:定义布局按钮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <Button
            android:id="@+id/btnSend"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="发送下载Notification"
            />
    <Button
            android:id="@+id/btnClean"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="清除Notification"
            />
</LinearLayout>




第二:定义消息通知的布局,进度条显示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <!--定义通知布局的文本框-->
    <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下载中……"
            android:textSize="20sp"
            android:textColor="@android:color/white"
            />
    <!--定义下载进度progressbar控件-->
    <ProgressBar
            android:id="@+id/pb"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="260dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            />
</LinearLayout>


第三:代码实现
监听按钮
得到NotificationManager的服务对象
初始化并得到Notification的视图对象,设置progressBar对象
定义单击通知事件。取消事件
package com.ncsyeyy.YeyyNotificationDownload;


import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RemoteViews;




public class MyActivity extends Activity implements OnClickListener {
//    定义notification的id
    private int notification_id=1;
//    定义主线程的handler
    private Handler handler=new Handler() ;
//    记录进度条进度
    private int count=0;
//    记录是否进度条取消
    private Boolean isclean=false;


    private Button btnSend;
    private Button btnClean;
    private NotificationManager nm;
    private Notification notification;


    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findView();
        setClick();
//        得到NotificationManager的服务对象
        nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//        初始化notification对象
        notification = new Notification(R.drawable.ic_launcher,"开始下载",System.currentTimeMillis());
//        得到Notification的视图对象
        notification.contentView=new RemoteViews(getPackageName(),R.layout.layout_notification);
//        设置视图中的ProgressBar对象
        notification.contentView.setProgressBar(R.id.pb,100,0,false);
//        定义单击通知事件
        Intent notificationIntent=new Intent(this,MyActivity.class);
        PendingIntent contentIntent= PendingIntent.getActivity(this,0,notificationIntent,0);
        notification.contentIntent=contentIntent;


    }


    private void findView(){
        btnSend = (Button) findViewById(R.id.btnSend);
        btnClean = (Button) findViewById(R.id.btnClean);
    }


    private void setClick(){
        btnSend.setOnClickListener(this);
        btnClean.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
//        自定义按钮单击监听器
        switch (v.getId()){
            case R.id.btnClean:
//                取消notification
                nm.cancel(notification_id);
                isclean=true;
                break;
            case R.id.btnSend:
//                显示notification
                showNotification();
                handler.post(run);
                break;
            default:
                break;
        }
    }


//    定义Runnable对象进行进度更新
    Runnable run=new Runnable() {
    @Override
    public void run() {
//        判断通知是否被取消
        if (!isclean){
//            如果没有取消就进行进度的更新
            count++;
            notification.contentView.setProgressBar(R.id.pb,100,count,false);
//            200毫秒count加1
            if (count<100)
                handler.postDelayed(run,200);


        }
    }
};
//    显示notification
    public void showNotification(){
        nm.notify(notification_id,notification);
    }
}

        


源码地址:http://download.csdn.net/detail/csdnyuandaimaxuexi/9214261


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值