アプリケーションでユーザーが送信した SMS を送信前に読みたい。これを達成する方法はありますか?
2939 次
3 に答える
2
これは不可能です。どのアプリケーションでもSmsManager
SMS の送信に使用でき、そのようなメッセージはおそらくカスタム ファームウェアによる場合を除いて傍受できません。
于 2012-05-03T15:14:12.730 に答える
0
送信 SMS をブロックすることはできません。SMS が送信された後にのみ、それについて知ることができます。また、SMS が送信済みボックスに届いたときに、SMS 用のコンテンツ オブザーバーを登録することでそれを行うことができます。
于 2012-05-03T15:17:48.970 に答える
0
必要に応じて、着信メッセージを傍受できます。
カスタム定義データが含まれている場合に SMS を「キャンセル」する SMS インターセプターの例を次に示します。
アプリケーションが電話に表示される前にメッセージを受信できるようにするには、優先度の高いマニフェストで受信者を定義する必要があります。例:
<receiver android:name=".SMSReceiver">
<intent-filter android:priority="9999">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
次に、レシーバーを作成します。
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SMSReceiver extends BroadcastReceiver{
private static final String CRITICAL_MESSAGE = "critical";
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null){
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
if (msgs[i].getMessageBody().toString().equals(CRITICAL_MESSAGE)){
str = "Critical msg from " + msgs[i].getOriginatingAddress() + " !";
Toast.makeText(context, str, Toast.LENGTH_LONG).show();
abortBroadcast();
}
}
}
}
}
上記の受信機は、重要な文字列を受信した場合、SMS をキャンセルします (ブロードキャストを中止します)。
于 2012-05-03T15:21:06.350 に答える