0

プラットフォームで SMS使用broadcast receiverして受信する簡単なアプリを構築していますが、 SMSをまったく受信していません ... ?が表示されません。ICSToast

私は3つのクラスを持っています:

  1. MessageActivity: メインクラスです
  2. SimpleSmsRecever: 受信するsms
  3. 返信:返信する

私のメインフェストファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.message"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MessageActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>


        <receiver android:name=".SmsReceiver" >
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
    </activity>
    <activity android:name=".Reply" >
    </activity>
</application>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />

SMS を受信するための私のコードは次のとおりです。

public class SmsReceiver extends BroadcastReceiver {

private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
private static String sender, body;
private static int flag = 0;

@Override
public void onReceive(Context context, Intent intent) {

    MessageActivity mvt = null;

    Log.i(TAG, "Intent recieved: " + intent.getAction());

    if (intent.getAction() == SMS_RECEIVED) {
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Object[] pdus = (Object[]) bundle.get("pdus");
            final SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < pdus.length; i++) {
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            }

            if (messages.length > -1) {
                flag = 1;
                sender = messages[0].getOriginatingAddress();
                body = messages[0].getMessageBody();
                Log.i(TAG,
                        "Message recieved: " +   messages[0].getMessageBody());
                Toast.makeText(context, messages[0].getMessageBody(),
                        Toast.LENGTH_SHORT).show();

            }
        }
    }
}
}

助けてください、何か関係があるような気がしICSます。グーグル中にどこかで読んだ...ありがとう。

4

1 に答える 1

-1

この解決策についてはわかりませんが、onPause および onResume メソッドをオーバーライドします。

于 2014-04-28T08:52:45.463 に答える