我想使用intent-filter,但android.provider.Telephony.SMS_RECEIVED
在android 4.2或更高版本中找不到。
我的意思是,当我选择使用Android 4.2进行编译时,我无法在adt中获得代码提示。但是当我用4.1编译时,没关系。我可以得到代码提示,当短信来临时,我会知道的。
我应该怎么做才能在Android 4.2中监控短信?收到消息后,有什么方法可以通知我?
<receiver android:name="com.itheima.mobilesafe.receiver.SmsReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
}
}
注意:从Android M开始,您需要获取运行时权限,并且以下代码将不会按原样运行,直到请求了运行时权限为止
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
SmsMessage smsMessage;
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
if (null != sms) {
for (int i = 0; i < sms.length; ++i) {
if (Build.VERSION.SDK_INT >= 23) {
smsMessage = SmsMessage.createFromPdu((byte[]) sms[i], intent.getStringExtra("format"));
} else {
smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
}
if (null != smsMessage) {
String smsBody = smsMessage.getMessageBody();
String address = smsMessage.getOriginatingAddress();
//your logic here
} else {
//handle null case;
}
}
}
}
}
}
}
而在你的清单
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<receiver
android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句