0

アプリケーションでユーザーが送信した SMS を送信前に読みたい。これを達成する方法はありますか?

4

3 に答える 3

2

これは不可能です。どのアプリケーションでもSmsManagerSMS の送信に使用でき、そのようなメッセージはおそらくカスタム ファームウェアによる場合を除いて傍受できません。

于 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 に答える