安卓开发:发送任务栏通知,并实现传值、跳转

来源:互联网 发布:淘宝最热门关键词 编辑:程序博客网 时间:2024/05/21 09:36

从活动A中填写相应的数据,然后通过发送任务栏通知,在活动B中将数据显示出来。
实现的效果如下:
这里写图片描述

新建activity_main.xml:

<?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:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.aiden.myapplication.MainActivity">    <EditText        android:id="@+id/content"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textSize="40sp" />    <Button        android:id="@+id/send"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="发送通知" /></LinearLayout>

activity_show.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:id="@+id/show"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textSize="40dp" /></LinearLayout>

显示数据的ShowActivity.java:

package com.example.aiden.myapplication;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;/** * Created by Aiden on 2016/2/23. */public class ShowActivity extends Activity {    TextView show;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentView(R.layout.activity_show);        Intent intent = this.getIntent();        Bundle bundle = intent.getExtras();        show = (TextView) this.findViewById(R.id.show);        show.setText(bundle.getString("content"));    }}

发送任务栏通知的MainActivity.java:

package com.example.aiden.myapplication;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.os.Bundle;import android.support.v4.app.NotificationCompat;import android.view.View;import android.widget.Button;import android.widget.EditText;import java.util.Random;public class MainActivity extends Activity implements View.OnClickListener {    private Button send; // 发送通知按钮    private EditText content; // 内容    private Notification notification;    private NotificationManager notificationManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentView(R.layout.activity_main);        send = (Button) this.findViewById(R.id.send);        send.setOnClickListener(this);        content = (EditText) this.findViewById(R.id.content);    }    @Override    public void onClick(View v) {        if (v == send) {            // 设置意图            Intent intent = new Intent(MainActivity.this, ShowActivity.class);            intent.putExtra("content", content.getText().toString());            // 第一个参数为上下文            // 第二个参数是产生随机,从而保证传递的值发生变化            // 第三个参数是意图            // 第四个参数是参数操作标识            PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, new Random().nextInt(10000), intent, 0);            // 获得通知栏管理者            notificationManager = (NotificationManager) MainActivity.this.getSystemService(Context.NOTIFICATION_SERVICE);            // 获得实例            NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);            builder.setSmallIcon(R.mipmap.ic_launcher) // 设置图标【不可缺少】                    .setContentTitle("标题") // 设置标题                    .setContentText("内容") // 设置内容                    .setTicker("通知栏内容") // 第一次出现在通知栏的内容                    .setWhen(System.currentTimeMillis()) // 设置显示的时间                    .setPriority(Notification.PRIORITY_DEFAULT) // 设置优先级                    .setDefaults(Notification.DEFAULT_ALL) // 设置通知的效果:声音、震动等 随系统                    .setAutoCancel(true) // 设置自动取消                    .setContentIntent(pendingIntent); // 设置意图            notification = builder.build();            // 第一个参数是通知的id,可以通过notificationManager.cancel(id)移除该通知            notificationManager.notify(100, notification);        }    }}

**注意以下几个问题:
1、千万别忘记在mainfest.xml中注册两个Activity。【如果未注册,是不会报错的】
2、一定要为通知设置显示的图标,如果不显示,是不会有显示通知的。
3、要想为每个任务栏通知的跳转传值的数据不一样,要为PendingIntent.getActivity()方法中第二个参数产生随机数【作为标识】
4、NotificationCompat类可以用support.v4.app,也可以用support.v7.app
**

2 0
原创粉丝点击