0

現在、SMS ブロードキャスト レシーバーを作成しています。携帯電話でも GoSMS を使用しています。

問題は次のとおりです。android:priority値を設定または設定しない場合2147483647(これはGoSmsの優先事項です)

私の受信機では、メッセージを受信できません。

を設定するandroid:priority ="2147483647"と、アプリはメッセージを受信できますが、電話の一部のアプリケーションが強制終了されました:

08-01 17:52:47.775: E/AndroidRuntime(3501): FATAL EXCEPTION: main
08-01 17:52:47.775: E/AndroidRuntime(3501): java.lang.RuntimeException: Unable to start service com.android.exchange.SmsRelayService@414f47f8 with Intent { cmp=com.android.exchange/.SmsRelayService (has extras) }: java.lang.NullPointerException
08-01 17:52:47.775: E/AndroidRuntime(3501):     at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2388)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at android.app.ActivityThread.access$1900(ActivityThread.java:127)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1222)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at android.os.Looper.loop(Looper.java:137)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at android.app.ActivityThread.main(ActivityThread.java:4507)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at java.lang.reflect.Method.invokeNative(Native Method)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at java.lang.reflect.Method.invoke(Method.java:511)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at dalvik.system.NativeStart.main(Native Method)
08-01 17:52:47.775: E/AndroidRuntime(3501): Caused by: java.lang.NullPointerException
08-01 17:52:47.775: E/AndroidRuntime(3501):     at android.provider.Telephony$Sms$Intents.getMessagesFromIntent(Telephony.java:888)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at com.android.exchange.SmsRelayService.onStartCommand(SmsRelayService.java:69)
08-01 17:52:47.775: E/AndroidRuntime(3501):     at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2371)

これは私のコードです

public class SmsListener extends BroadcastReceiver{
 @Override
    public void onReceive(Context context, Intent intent) {

        if(intent.getAction().equals(Constants.SMS_RECEIVED_ACTION)){
        // Do some thing
        }
}
}

<receiver android:name=".widget.SmsListener" >
            <intent-filter android:priority="2147483647">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

Galaxy S2、ICSで実行しています

お願い助けて

よろしく

4

1 に答える 1

1

SMS を受信する必要があり、SMS ブロードキャストを中止したくない場合は、GO SMS pro のアプリケーション設定を変更して、他のアプリがブロードキャストを受信できるようにするだけです。ユーザーが GO SMS を使用している場合は、そのように指示できます。このように: 「Go SMS を開き、[メニュー] をクリックして [設定] をクリックし、[受信設定] をクリックして、[他のメッセージ通知を無効にする] のチェックを外します。」

ただし、ブロードキャストを中止する必要がある場合は、優先度を「2147483647」に設定してもうまくいきませんでした。肝心なのは、両方のアプリケーションがブロードキャストを受信し、SMS が実際に受信するということでした。ここで提案された最初にアプリをインストールしたルール(選択した回答のコメントを参照) とここでもうまくいきませんでした。

ただし、デバイスで実行されているレシーバーのリストを取得できるように見えるコードをここで提案した人もいるので、それを調べたほうがよいでしょう。したがって、うまくいけば、あなたの受信機に干渉する可能性のある受信機についてユーザーに警告できるので、ユーザーからの「アプリが機能しない」というコメントで 1 つ星のランクが得られることはありません。

于 2012-08-03T08:54:04.167 に答える