java – 读取并显示传入的消息文本android
发布时间:2020-12-15 05:08:51 所属栏目:Java 来源:网络整理
导读:我是 android开发的新手.我正在开发小型android应用程序.在我的应用程序中,我想检索新发送的短信并将此消息显示给用户.我的代码看起来像 // HellowordActivity.javapackage com.example.helloword;import android.content.BroadcastReceiver;import android.
我是
android开发的新手.我正在开发小型android应用程序.在我的应用程序中,我想检索新发送的短信并将此消息显示给用户.我的代码看起来像
// HellowordActivity.java package com.example.helloword; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.app.Activity; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; public class HellowordActivity extends BroadcastReceiver { public void onReceive(Context context,Intent intent) { Bundle myBundle = intent.getExtras(); SmsMessage [] messages = null; String strMessage = ""; if (myBundle != null) { Object [] pdus = (Object[]) myBundle.get("pdus"); messages = new SmsMessage[pdus.length]; for (int i = 0; i < messages.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); strMessage += "SMS From: " + messages[i].getOriginatingAddress(); strMessage += " : "; strMessage += messages[i].getMessageBody().toString(); strMessage += "n"; } // Toast.makeText(context,strMessage,Toast.LENGTH_SHORT).show(); Intent _intent = new Intent(context,PopupActivity.class); _intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); _intent.putExtra("strMessage",strMessage); startActivity(_intent); } } } 我在Android Manifest.xml中添加了接收者和权限 <uses-permission android:name="android.permission.RECEIVE_SMS"/> <receiver android:name=".HellowordActivity" > <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> <activity android:name=".PopupActivity" android:launchMode="singleTop" /> 我在布局部分没有做任何事情.当新消息出现时,我想要什么作为输出; 解决方法
尝试这个对我有用,你将收到一个向你显示的收到的信息的内容:
package com.example.a; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; public class SMSBroadcastReceiver extends BroadcastReceiver { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; private static final String TAG = "SMSBroadcastReceiver"; @Override public void onReceive(Context context,Intent intent) { Log.i(TAG,"Intent recieved: " + intent.getAction()); if (intent.getAction().equals(SMS_RECEIVED)) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[])bundle.get("pdus"); final SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); } if (messages.length > -1) { Toast.makeText(context,"Message recieved: " + messages[0].getMessageBody(),7000).show(); } } } } } AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.a" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.HARDWARE_TEST"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name=".SMSBroadcastReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" > </action> </intent-filter> </receiver> </application> </manifest> 使用DDMS通过Telnet将短信发送到您的模拟器 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |