3

着信 SMS を実際に処理する BroadcastReceiver を作成しました。これは Android 2.3.3 で正常に実行されるコードですが、どういうわけか ICS を実行しているデバイスで同じコードを実行できません。

私の受信機

public class SmsListener extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        System.out.println("#### SMS Received");
        if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
            Bundle bundle = intent.getExtras();           //---get the SMS message passed in---
            SmsMessage[] msgs = null;
            String msg_from;
            if (bundle != null){
                //---retrieve the SMS message received---
                try{
                    Object[] pdus = (Object[]) bundle.get("pdus");
                    msgs = new SmsMessage[pdus.length];
                    for(int i=0; i<msgs.length; i++){
                        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                        msg_from = msgs[i].getOriginatingAddress();
                        String msgBody = msgs[i].getMessageBody();
                        System.out.println("#### SMS Received: " + msg_from);
                        System.out.println("#### Message: " + msgBody);
                    }
                }catch(Exception e){
                           Log.d("Exception caught",e.getMessage());
                }
            }
        }
    }
}

権限

   <receiver android:name=".SmsListener" android:enabled="true"       android:permission="android.permission.RECEIVE_SMS">
      <intent-filter>
         <action android:name="android.provider.Telephony.SMS_RECEIVED" />
      </intent-filter>
   </receiver>    

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.READ_SMS"/>       
4

1 に答える 1

0

実際、私は答えを得ました.最新のセキュリティ追加により、Androidは目に見えるアクティビティを通じてのみブロードキャストレシーバーの登録を許可するようになりました.

于 2013-01-08T05:32:41.967 に答える