我想开始申请从特定号码接收短信。 我正在尝试使用onMessageWaitingIndicatorChanged(boolean mwi){}方法但是 我正在挣扎。 那么,有谁在那里帮我详细? 谢谢
答案 0 :(得分:5)
您需要为android.provider.Telephony.SMS_RECEIVED
注册广播接收器。然后,接收方可以检查SMS的号码并开始适当的活动。
所以,你需要:
uses-permission
添加android.permission.RECEIVE_SMS
到您的清单在manfiest中的<application/>
元素中声明广播接收器:
<receiver android:name=".YourReceiverName">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
创建接收器类,扩展IntentReceiver
。
onReceiveIntent
中,您可以通过调用Telephony.Sms.Intents.getMessagesFromIntent()
并传递您提供的意图来获取相关消息。startActivity
答案 1 :(得分:0)
这是我的onReceive()
方法,它有效:)
public void onReceive( Context context, Intent intent ) {
// get incoming message
Bundle extras = intent.getExtras();
String messages = "";
// if message available, go on
if ( extras != null ) {
// get the array of the message
Object[] smsExtra = (Object[]) extras.get( "pdus" );
// loop through the number of available messages
for ( int i = 0; i < smsExtra.length; ++i ) {
// create smsmessage from raw pdu
SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);
// retrieve contents of message
String body = sms.getMessageBody().toString();
String address = sms.getOriginatingAddress();
// only accept messages from specified number
if(address.equals(0000)){
// store the message to database
storeToDatabase( contentResolver, sms );
// stop message from getting to default app
this.abortBroadcast();
}
}
}
}