热搜: ios  Android  Loading  开源  安卓开发  ShareSDK  RecyclerView  Python  Xcode  生命周期 
  • 首 页
  • 安卓中通知功能的具体实现

       日期:2017-02-05     浏览:424    评论:0    
    核心提示:通知[Notification]是Android中比较有特色的功能,当某个应用程序希望给用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知实现。使用通知的步骤1、需要一个NotificationManager来获得NotificationManager manager = (NotificationManager

    通知[Notification]是Android中比较有特色的功能,当某个应用程序希望给用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知实现。

    安卓中通知功能的具体实现

    使用通知的步骤

    1、需要一个NotificationManager来获得
    NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    
    2、使用builder模式[构造函数参数太多怎么办](http://www.importnew.com/6605.html)创建通知对象。
    
    3、调用manager.notify(1, notification);

    见代码:

    布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.hms.notificationtest.MainActivity">
    
       <Button
           android:id="@+id/send_notice"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Send notice"/>
    </LinearLayout>

    MainActivity

    import android.app.Notification;
    import android.app.NotificationManager;
    import android.graphics.BitmapFactory;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.app.NotificationCompat;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button sendNotice = (Button) findViewById(R.id.send_notice);
            sendNotice.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch(v.getId()) {
                case R.id.send_notice:
                    NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
                    Notification notification = new NotificationCompat.Builder(this)
                            .setContentTitle("This is content title")
                            .setContentText("This is content text")
                            .setWhen(System.currentTimeMillis())
                            .setSmallIcon(R.mipmap.ic_launcher)
                            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                            .build();
                    manager.notify(1, notification);
                    break;
                default:
            }
        }
    }

    这个通知是不能响应点击事件的,这个时候就用到了

    PendingIntent
    
    Intent更加倾向于立即去执行某个动作
    而PendingIntent更加倾向于在某个合适的时机去执行某个动作
    所以,也可以简单的把PendingIntent理解为延迟执行的Intent

    新建一个NotificationActivity

    然后改动如下

    ...
      case R.id.send_notice:
                    Intent intent = new Intent(this, NotificationActivity.class);
                    PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
    ...
    ...
    .setContentIntent(pi)
    ...
    .build()

    点击通知后,图标不会自动消失,可以通过

    ...
    .setAutocancle()
    ...
    .build();

    或者在NotificationActivity中用

    NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    manager.cancle(1);//这里的1是id。也就是nofify(1, notificatiion)中的1

    通知还可以在点击的时候设置音频、振动、LED灯等更多功能,都可以通过

    setXXX();

    实现。

     
    标签: 安卓开发
     
    更多>同类移动开发
    0相关评论

    推荐图文
    推荐移动开发
    点击排行
    网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  广告服务  |  网站留言  |  违规举报