0

SMS受信機のAndroidコードを書いていますが、機能していません。それはコンパイルされますが、SMS を取得すると、Toast を使用するときに想定どおりに表示されませんでした。これは私のコードです:

package com.example.homecontrolingbysms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class SmsReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;
        String messageReceived = "";            
        if (bundle != null)
        {
            //---retrieve the SMS message received---
           Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length]; 

            for (int i=0; i<msgs.length; i++){
                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);  
                messageReceived +="From "+ msgs[i].getOriginatingAddress();
                messageReceived+=" : ";
                messageReceived += msgs[i].getMessageBody().toString();
                messageReceived += "\n";        
            }

            //---display the new SMS message---
            Toast.makeText(context, messageReceived, Toast.LENGTH_SHORT).show();
        }                         
    }
}

また、マニフェストを投稿して、コードのすべての重要な部分が利用可能であることを確認しました
manifest.xml:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.homecontrolingbysms"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.homecontrolingbysms.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

       <activity
            android:name="com.example.homecontrolingbysms.Door"
            android:label="@string/app_name" >
        </activity>

        <activity
            android:name="com.example.homecontrolingbysms.Window"
            android:label="@string/app_name" >

        </activity>

        <activity
            android:name="com.example.homecontrolingbysms.Light"
            android:label="@string/app_name" >

        </activity>

    </application>

</manifest>
4

3 に答える 3

2

menifest ファイルに以下のコードを追加して、smsreceiver を登録します。

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

このリンクが役立つ場合があります。

Android アプリで SMS を受信する

http://shreymalhotra.me/blog/tutorial/receive-sms-using-android-broadcastreceiver-inside-an-activity/

これをチェックしてください。

于 2013-05-03T11:51:26.233 に答える