標籤:XML sms perm extra pps data media drawable name
sd卡監聽器:
package org.dreamtech.sdstate;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class SdcardStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 擷取事件類型 String action = intent.getAction(); if ("android.intent.action.MEDIA_MOUNTED".equals(action)) { // sd卡掛載 } else if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)) { // sd卡卸載 } }}
配置receiver
<receiver android:name="org.dreamtech.sdstate.SdcardStateReceiver"> <intent-filter > <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action."/> <!--約束類型叫file 因為sd裡面存的資料類型是file --> <data android:scheme="file"/> </intent-filter> </receiver>
簡訊監聽器:
package org.dreamtech.smslistener;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.SmsMessage;public class SmsListenerReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Object[] objects = (Object[]) intent.getExtras().get("pdus"); for (Object object : objects) { SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) object); String messageBody = smsMessage.getMessageBody(); String address = smsMessage.getOriginatingAddress(); System.out.println("簡訊內容:" + messageBody + "####" + "來自" + address); } }}
注意配置和許可權:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.dreamtech.smslistener" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="org.dreamtech.smslistener.MainActivity" 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="org.dreamtech.smslistener.SmsListenerReceiver"> <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> </application></manifest>
卸載安裝監聽器:
package org.dreamtech.appstate;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class AppStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if ("android.intent.action.PACKAGE_INSTALL".equals(action)) { // 應用安裝(雖然存在,但是實際並不調用) } else if ("android.intent.action.PACKAGE_ADDED".equals(action)) { // 應用安裝 } else if ("android.intent.action.PACKAGE_REMOVED".equals(action)) { // 應用卸載 } }}
配置:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.dreamtech.appstate" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="org.dreamtech.appstate.MainActivity" 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="org.dreamtech.appstate.AppStateReceiver" > <intent-filter> <action android:name="android.intent.action.PACKAGE_INSTALL" /> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <!-- 注意配置約束 --> <data android:scheme="package" /> </intent-filter> </receiver> </application></manifest>
安卓開發:廣播的各種應用