まず第一に、私はすでに可能な解決策を探し、すべてを試しましたが、それでもうまくいきませんでした. 私は何かが欠けているに違いない。
SMS を受信/読み書きするアプリを作成しようとしています。書き込み部分は問題なく動作していますが、私の放送受信機は放送をキャッチしません。
AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
...
<receiver android:name=".SmsReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
SmsReceiver.java
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "ON RECEIVE BROADCAST", Toast.LENGTH_LONG).show();
Log.d("ON ","RECEIVE");
Bundle bundle = intent.getExtras();
Object[] messages = (Object[]) bundle.get("pdus");
SmsMessage[] sms = new SmsMessage[messages.length];
// Create messages for each incoming PDU
for (int n = 0; n < messages.length; n++) {
sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
for (SmsMessage msg : sms) {
Log.e("RECEIVED MSG",":"+msg.getMessageBody());
// Verify if the message came from our known sender
}
}
ログまたはトーストは発生しません。
android.intent.action.AIRPLANE_MODE
宣言をテストするためだけにマニフェストのアクションを変更しようとしましたが、ブロードキャストが受信されましたが、SMS では機能しません。
更新しました
別の電話で試したところ、うまくいきました。Handcent SMS を使用しているため、ブロードキャストがブロックされている可能性があります。いずれにせよ、インストールされているアプリケーションとは関係なく、すべての電話で動作する必要があります。