0

電話オペレーターの電子メール サービスから受信したすべての SMS を傍受する簡単なアプリケーションを作成しようとしています。

仕組み: 携帯電話会社から電子メールが届き、SMS で電子メールが受信トレイに届くたびに通知されます。SMS は次のように送信されます。


You have a new e-mail from:email@domain.com See it now through internet! Visit http://m.iclaro.com.br. Subject: SUBJECT GOES HERE

私が作成しようとしているこのアプリは、これらの SMS を傍受し、件名全体 (「SUBJECT GOES HERE」) を取得し、内容に件名のみを含む番号から偽の SMS を送信する必要があります。

私がすでに行ったこと: この電子メール サービスからこれらすべての SMS を傍受し、件名を取得して、件名だけで新しい番号 (私は 3 つを選びました) から新しい SMS を偽造します。

しかし、ここで問題が発生しました。この新しい偽の SMS には通知が表示されません。

BroadcastReceiver は次のようになります。


public class SmsReceiver extends BroadcastReceiver
    {
        ...
        public void onReceive( Context context, Intent intent ) 
        {
            ...
            if(address.contains("1") && body.contains(replace))
            {                   
                    body = body.substring(body.lastIndexOf(replace),body.length());
                    body = body.replace(replace, "");
                    address = "3";

                    ContentResolver contentResolver = context.getContentResolver();
                    ContentValues values = new ContentValues();
                    values.put("address", address);
                    values.put("body", body);
                    contentResolver.insert(Uri.parse("content://sms/inbox"), values);
                    this.abortBroadcast();
            }
        }
    }

私もしようとしました:


if(address.contains("1") && body.contains(replace))
{
    this.abortBroadcast();

contentResolver.insert(Uri.parse("content://sms/inbox"), values);
this.abortBroadcast();

this.clearAbortBroadcast();
contentResolver.insert(Uri.parse("content://sms/inbox"), values);
this.abortBroadcast();

最後に受信した SMS を再通知する方法はありますか? 助言がありますか?

4

1 に答える 1

0

受信した SMS メッセージを編集した後、pdu をエンコードする必要があります。そのために、pdu のエンコードに smslib などの Java ライブラリを使用できます。

public class SmsReceiver extends BroadcastReceiver
    {
        ...
        public void onReceive( Context context, Intent intent ) 
        {
            ...
            if(address.contains("1") && body.contains(replace))
            {                   
                    body = body.substring(body.lastIndexOf(replace),body.length());
                    body = body.replace(replace, "");
                    address = "3";

                    //ContentResolver contentResolver = context.getContentResolver();
                    //ContentValues values = new ContentValues();
                    //values.put("address", address);
                    //values.put("body", body);
                    //contentResolver.insert(Uri.parse("content://sms/inbox"), values);
                    this.abortBroadcast();
                    //create new pdu from the edited data
                    byte[] pdu = .......;
                    intent.putSerializableExtra("pdus", pdu);
                    context.sendBroadcast(intent);
            }
        }
    }
于 2012-09-13T18:16:42.907 に答える