Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何在android中接收短信?_Android - Fatal编程技术网

我如何在android中接收短信?

我如何在android中接收短信?,android,Android,我是android新手,我正在使用android 2.1进行一些短信接收:当收到短信时,它将无法工作。。。我有力量接近,救命 public class SmsReceiverActivity extends Activity { private static final String SHORTCODE = "55443"; public void onReceive(Context context, Intent intent) { Bundle bundle

我是android新手,我正在使用android 2.1进行一些短信接收:当收到短信时,它将无法工作。。。我有力量接近,救命

public class SmsReceiverActivity extends Activity {
    private static final String SHORTCODE = "55443";
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        Object[] messages = (Object[]) bundle.get("pdus");
        SmsMessage[] sms = new SmsMessage[messages.length];
        //Create messages for each incoming PDU
        for (int n = 0; n < messages.length; n++) {
            sms[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
        }
        for (SmsMessage msg: sms) {
            //Verify if the message came from our known sender
            if (TextUtils.equals(msg.getOriginatingAddress(), "SHORTCODE")) {
                Toast.makeText(context, "Received message from the mothership: " + msg.getMessageBody(),Toast.LENGTH_SHORT).show();
            }
        }
}

我认为您需要在Manifest.xml中做一些更改,例如:

 <receiver android:name=".SmsReceiver"> 
    <intent-filter android:priority="100">
        <action android:name="android.intent.action.PHONE_STATE" />
        <action android:name="PACKAGE_NAME.android.action.broadcast"/> 
         <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
    </intent-filter> 
</receiver>



您需要一个
广播接收器
来读取应用程序中的短信。您可以使用以下命令

public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(final Context context, final Intent intent) {

        Object[] pdus = (Object[]) intent.getExtras().get("pdus");

        SmsMessage shortMessage = SmsMessage.createFromPdu((byte[]) pdus[0]);

        Log.i("sms received", "sms received");
        Log.i("SMS: ", shortMessage.getDisplayMessageBody());
    }
}
此外,您还需要通过以下方式将其声明到应用程序中

    <receiver android:name="YOUR_PACKAGE_NAME.SmsReceiver" >
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

不要忘记添加与SMS相关的权限,如以下内容

<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>


请发布您的logcat错误。什么不起作用?你有错误吗?您没有收到任何短信?您必须先阅读有关
广播接收器的信息。你需要关心这个异常:java.lang.ClassNotFoundExceptionSorry Moaaviah先生我在你的代码中的“Contact”和“UserPreferences”有错误,“Contact”和“UserPreferences”是什么?感谢alot@maryam_mo请现在检查一下。有一些额外的东西我已经移走了。请用您各自的包裹更改您的包裹名称。
    <receiver android:name="YOUR_PACKAGE_NAME.SmsReceiver" >
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>