使用扫描的QR码中的数据启动SMS

时间:2012-01-11 16:03:30

标签: android sms android-intent qr-code

我正在尝试使用扫描的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:hello”。如何通过电话号码和已输入号码和正文字段的消息启动SMS活动?

我看到这篇文章:

Sending SMS using Intent does not add recipients on some devices

我是否需要自己解析QR码结果并将其分解为电话号码和消息,然后将其添加为Extras,就像那个例子一样?


知道了!


由于我现在无法回答我自己的问题,所以:

好的,让它上班。我做了一个课程,将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 :(得分:0)

好的,让它上班。我做了一个课程,将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);
}