2

タイトルはあまり具体的ではないので、ここで詳細を説明します。運転中に着信テキストにメッセージを自動返信するアプリを作成しようとしています。このアプリは、このコミュニティのおかげですでに 100% 機能していますが、これを拡張したいと考えています。私の目標は、送信者の番号を取得することです(私はすでにこれを持っています)が、同じ人に2回(またはそれ以上)続けて自動返信するように、何らかの方法で個別に保存します。

public class Receiver extends BroadcastReceiver {
    public static String number = "";
    public static String sms = "";

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        SmsMessage[] msgs;

        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]);
                number = msgs[i].getOriginatingAddress();
                sms = msgs[i].getMessageBody();
            }

            if (Main.serviceBroadcast) {
                String sent = "SMS_SENT";
                PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent(sent), 0);
                SmsManager sm = SmsManager.getDefault();

                if (Main.serviceReply && !number.equals("")) {
                    sm.sendTextMessage(number, null, Main.reply, pi, null);
                    Toast.makeText(context, "replied to " + number, Toast.LENGTH_SHORT).show();
                }
            }
        }
    }
}

このプログラムの完全なソースが必要な場合は、http://mellowdev.netにアクセスしてください。

4

2 に答える 2

0
String number = "";
String person = "";
//Create empty list this way
ArrayList<String> phoneNumbers = new ArrayList<String>();
ArrayList<String> personNames = new ArrayList<String>();

// add them together and the number array and person array will always be in sync 
// when you call them

//Add to your list this way
number.add(phoneNumbers);
personNames.add(person);

//get from your list this way for example or you can add them to a list view, etc..
// you use get to get the string stored in the list at that position.
number = phoneNumbers.get(2);
person = personNames.get(2);

//or you can do a for loop to check them all to see if they match something
for( int i = 0; i < phoneNumbers.length - 1; i++)
{
person = personNames.get(i);

   if (person.matches("Nicolas")) {
// do something with it here
 }

 }

1 年前に私が尋ねた質問を見て、これらの配列リストを簡単に保存して取得できるようになりました。 AndroidでArrayListをFileに保存する

ほら!

于 2013-07-19T22:49:34.983 に答える
0

これが最良の答えではないかもしれないことはわかっています。しかし、私が自分のアプリケーションで行ったことは、これらの数値を格納する SQLite データベースを作成したことでした。これは、後で実際に必要になったからです。そのため、新しいメッセージを受信するたびに、データベースをチェックして、番号がデータベースにない場合は SMS コードを実行し、それをデータベースに追加しました。

また、電話はその人が運転していることを認識しているため、最初にトグルを設定しておく必要があります。したがって、運転モードが削除されると、テーブル内のデータを削除できます。

于 2013-07-19T06:20:17.433 に答える