我正在开发一个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"/>
,但仍无法找到解决方案
答案 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();
}