AndroidデバイスからのSMSメッセージの送信または受信、あるいはその両方を無効にするアプリを探しています。アプリがインストールされると、ブール値0または1のWeb URLをチェックします。ゼロの場合、SMSは無効になり、それ以外の場合は有効になります。
誰かがどこから始めればいいのか教えてもらえますか?これは可能ですか?
AndroidデバイスからのSMSメッセージの送信または受信、あるいはその両方を無効にするアプリを探しています。アプリがインストールされると、ブール値0または1のWeb URLをチェックします。ゼロの場合、SMSは無効になり、それ以外の場合は有効になります。
誰かがどこから始めればいいのか教えてもらえますか?これは可能ですか?
SMSの受信/送信を無効にすることはできませんが、SMSで受信したブロードキャストインテントをキャッチすることはできます。
SMSで受信したブロードキャストインテントは順序付けられたブロードキャストであり、レシーバーで定義された優先度の順にすべてのブロードキャストレシーバーに配信されます。
優先度0のブロードキャストレシーバーを登録すると、SMSブロードキャストをキャッチしてキャンセルできます。
他のSMSアプリも優先度0で登録できることに注意してください。同じ優先度の値に対して、動作は定義されていません。また、SMSはとにかく受信され、結果の通知/着信音のみを非表示にします。
別のアプローチは、SMS中央番号をいくつかの無効な値に設定することですが、ルート化された電話が必要です
着信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
)が最も高いものが最初に処理されることに注意してください。