8.3 Android Basic 数据存储 Intent&Broadcast
Intnet & Broadcast 示例演示
-
新建项目BroadcastReceiverDemo项目,编辑AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tutorial" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".BroadcastReceiverDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="AndroidReceiver1">
<intent-filter>
<action android:name="com.toturial.action.NEW_BROADCAST_1"></action>
</intent-filter>
</receiver>
<receiver android:name="AndroidReceiver2">
<intent-filter>
<action android:name="com.tutorial.action.NEW_BROADCAST_2"></action>
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
我们注册了两个BroadcastReceiver 一个AndroidReceiver1 另一个是AndroidReceiver2 前者接收action为com.tutorial.action.NEW_BRAODCAST_1的Intnet,后者接收action为com.tutorial.action.NEW_BROADCAST_2的Intent。
2. 编辑BroadcastReceiverDemo类,在这里广播Intent:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class BroadcastReceiverDemo extends Activity {
public static final int ITEM0 = Menu.FIRST;
public static final int ITEM1 = Menu.FIRST + 1;
static final String ACTION_1 = "com.toturial.action.NEW_BROADCAST_1";
static final String ACTION_2 = "com.tutorial.action.NEW_BROADCAST_2";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, ITEM0, 0, "显示Notification");
menu.add(0, ITEM1, 0, "清除Notification");
menu.findItem(ITEM1);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ITEM0:
actionClickMenuItem1();
break;
case ITEM1:
actionClickMenuItem2();
break;
}
return true;
}
private void actionClickMenuItem1() {
Intent intent = new Intent(ACTION_1);
sendBroadcast(intent);
}
private void actionClickMenuItem2() {
Intent intent = new Intent(ACTION_2);
sendBroadcast(intent);
}
}
3. 创建AndroidReceiver1 和 AndroidReceiver2类,继承自BroadcastReceiver
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AndroidReceiver1 extends BroadcastReceiver {
Context context;
public static int NOTIFICATION_ID = 21321;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
showNotification();
}
private void showNotification(){
NotificationManager notificationManager = (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.icon,"在AndroidReceiver1中",System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(context,BroadcastReceiverDemo.class), 0);
notification.setLatestEventInfo(context,"在AndroidReceiver1中",null,contentIntent);
notificationManager.notify(NOTIFICATION_ID,notification);
}
}
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AndroidReceiver2 extends BroadcastReceiver {
Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
DeleteNotification();
}
private void DeleteNotification(){
NotificationManager notificationManager =(NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
notificationManager.cancel(AndroidReceiver1.NOTIFICATION_ID);
}
}
im@xingquan.org