Запустите SMS, используя данные отсканированного QR-кода - PullRequest
0 голосов
/ 11 января 2012

Я пытаюсь начать действие SMS с номера телефона из заполненного отсканированного QR-кода. До сих пор я смог запустить действие, но поля номера и сообщения пустые. Вот то, что у меня есть, в настоящее время это сбой приложения:

else if(resultType.getParsedResultType() == ParsedResultType.SMS){
    Button smsButton = (Button)findViewById(R.id.btn_send_sms);
    smsButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v){
            String smsUri = ResultsActivity.this.item.getContent();
            Uri uri = Uri.parse(smsUri);

            Intent i = new Intent(Intent.ACTION_VIEW);
            i.addCategory(Intent.CATEGORY_DEFAULT);
            i.setType("vnd.android-dir/mms-sms");
            i.setData(uri);
            startActivity(i);
        }
    });
    smsButton.setVisibility(View.VISIBLE);
}

Строка smsUri содержит отсканированную строку из QR-кода "SMSTO: 666-666-1234: привет". Как я могу получить запуск SMS-активности с номером телефона и сообщением, уже введенным в поля номера и тела?

Я видел этот пост:

Отправка SMS с помощью Intent не добавляет получателей на некоторых устройствах

Нужно ли мне самому анализировать результат QR-кода и разбивать его на номер телефона и сообщение, а затем добавлять их в качестве дополнений, как в этом примере?


Понял!


Поскольку я пока не могу ответить на свой вопрос, вот оно:

Хорошо, получил это на работу. Я создал класс, чтобы разбить результат QR на отдельные элементы:

public class Sms {
    public static String[] breakString(String s) {
        String[] smsElements = s.split(":");
        return smsElements;
    }
}

Затем изменил метод, описанный выше, на:

else if(resultType.getParsedResultType() == ParsedResultType.SMS){
    Button smsButton = (Button)findViewById(R.id.btn_send_sms);
    smsButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v){
            String smsUri = ResultsActivity.this.item.getContent();
            String[] smsElements = Sms.breakString(smsUri);

            Intent i = new Intent(Intent.ACTION_VIEW);
            i.putExtra("address", smsElements[1]);
            i.putExtra("sms_body", smsElements[2]);
            i.setData(Uri.parse("smsto:" + smsElements[1]));
            startActivity(i);
        }
    });
    smsButton.setVisibility(View.VISIBLE);
}

1 Ответ

0 голосов
/ 14 января 2012

Хорошо, получил его на работу.Я создал класс, чтобы разбить результат QR на отдельные элементы:

public class Sms {
    public static String[] breakString(String s) {
        String[] smsElements = s.split(":");
        return smsElements;
    }
}

Затем изменил метод, описанный выше, на:

else if(resultType.getParsedResultType() == ParsedResultType.SMS){
    Button smsButton = (Button)findViewById(R.id.btn_send_sms);
    smsButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v){
            String smsUri = ResultsActivity.this.item.getContent();
            String[] smsElements = Sms.breakString(smsUri);

            Intent i = new Intent(Intent.ACTION_VIEW);
            i.putExtra("address", smsElements[1]);
            i.putExtra("sms_body", smsElements[2]);
            i.setData(Uri.parse("smsto:" + smsElements[1]));
            startActivity(i);
        }
    });
    smsButton.setVisibility(View.VISIBLE);
}
...