3

AndroidデバイスからのSMSメッセージの送信または受信、あるいはその両方を無効にするアプリを探しています。アプリがインストールされると、ブール値0または1のWeb URLをチェックします。ゼロの場合、SMSは無効になり、それ以外の場合は有効になります。

誰かがどこから始めればいいのか教えてもらえますか?これは可能ですか?

4

2 に答える 2

2

SMSの受信/送信を無効にすることはできませんが、SMSで受信したブロードキャストインテントをキャッチすることはできます。

SMSで受信したブロードキャストインテントは順序付けられたブロードキャストであり、レシーバーで定義された優先度の順にすべてのブロードキャストレシーバーに配信されます。

優先度0のブロードキャストレシーバーを登録すると、SMSブロードキャストをキャッチしてキャンセルできます。

他のSMSアプリも優先度0で登録できることに注意してください。同じ優先度の値に対して、動作は定義されていません。また、SMSはとにかく受信され、結果の通知/着信音のみを非表示にします。


別のアプローチは、SMS中央番号をいくつかの無効な値に設定することですが、ルート化された電話が必要です

于 2013-03-02T11:00:56.443 に答える
2

着信SMS用にBroadcastReceiverを登録し、this.abortBroadcast();それ以降の処理を中止するために使用できます。

あなたの中にマニフェスト:

 <receiver android:name=".SMSBroadcastReceiver">
   <intent-filter>
     <action android:name="android.provider.telephony.SMS_RECEIVED"></action>
   </intent-filter>
 </receiver>

受信機の実装:

 public class SMSBroadcastReceiver extends BroadcastReceiver {

    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

    @Override
    public void onReceive(Context context, Intent intent) {
      if (intent.getAction() == SMS_RECEIVED) {
        Bundle bundle = intent.getExtras();
        ...
        this.abortBroadcast();
      }
    }
}

ただし、その方法で発信SMSを中止することはできません。複数のBroadcastReceiverが登録されている場合は、優先度(android:priority)が最も高いものが最初に処理されることに注意してください。

于 2013-03-02T11:12:50.473 に答える