读取传入的短信并将消息正文传递给android应用程序

时间:2017-01-21 18:57:32

标签: android sms message android-cursor

我正在开发一个Android应用程序,我想在其中读取短信并将数据传递给我的应用程序。

我尝试了很多方法,但无法弄明白。这就是我在做的事情。我的代码有问题。

 String msg_body = "";
       Uri my_uri = Uri.parse("content://sms/inbox");
       Cursor readFstSms = v.getContext().getContentResolver().query(my_uri, null, null, null, null);
       if(readFstSms.moveToFirst())
       {
           msg_body = readFstSms.getString(readFstSms.getColumnIndexOrThrow("body")).toString();
       }
       readFstSms.close();
       Uri gmmIntentUri = Uri.parse("google.navigation:q=" + msg_body);
       Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
       mapIntent.setPackage("com.google.android.apps.maps");
       startActivity(mapIntent);

我还在清单文件中添加了<uses-permission android:name="android.permission.READ_SMS"/> ,但仍无法找到解决方案

1 个答案:

答案 0 :(得分:0)

首先,您需要通过清单

设置应用的读取权限
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>

你需要一个BroadcastReciever,它应该在使用intent过滤器android.provider.Telephony.SMS_RECEIVED的清单中声明 &#39;
一旦接收器开始工作,您可以在该BroadcastReceiver的onRecieve回调方法中处理收到的SMS。

if (intentExtras != null) {
            Object[] messages = (Object[]) intentExtras.get(SMS_BUNDLE);

            for (int i = 0; i < messages.length; ++i) {
                SmsMessage sms = SmsMessage.createFromPdu((byte[]) messages[i]);

                String body = sms.getMessageBody().toString();

 Toast.makeText(context, body, Toast.LENGTH_SHORT).show();

            }