始终无法监听新短信,在emulator&真机上都试过了...SmsCheckReceiver.java:package com.example.smschecktest;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;public class SmsCheckReceiver extends BroadcastReceiver {
private static final String TAG = "SmsCheckReceiver";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i(TAG, "onReceive");
Bundle extras = intent.getExtras();
if (extras == null)
return; Object[] pdus = (Object[]) extras.get("pdus"); for (int i = 0; i < pdus.length; i++) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
String fromAddress = message.getOriginatingAddress();
String messageBody = message.getMessageBody().toString(); Log.i(TAG, "From: " + fromAddress + " message: " + messageBody);
}
}}AndroidManifest.xml:<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.smschecktest"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<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" >
<receiver android:name=".SmsCheckReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application></manifest>
短信BroadcastReceiver String
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;public class SmsCheckReceiver extends BroadcastReceiver {
private static final String TAG = "SmsCheckReceiver";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i(TAG, "onReceive");
Bundle extras = intent.getExtras();
if (extras == null)
return; Object[] pdus = (Object[]) extras.get("pdus"); for (int i = 0; i < pdus.length; i++) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
String fromAddress = message.getOriginatingAddress();
String messageBody = message.getMessageBody().toString(); Log.i(TAG, "From: " + fromAddress + " message: " + messageBody);
}
}}AndroidManifest.xml:<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.smschecktest"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<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" >
<receiver android:name=".SmsCheckReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application></manifest>
短信BroadcastReceiver String
跟优先级没关系
是因为应用没有activity,仅仅有receiver不行,必须要有个activity...
我记得以前2.2不是这样的...
太久没有写过应用了