4

アプリでSMSを受信しようとしましたが、AndroidManifest.xmlファイルに問題があると思います

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.amin_amini.smstestmobi"
      android:versionCode="1"
      android:versionName="1.0.0">
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.READ_SMS"/>
    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
        <activity android:name=".SMS"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".SmsReceiver"
                  android:enabled="true"
                  android:exported="true"
                  android:permission="android.permission.BROADCAST_SMS"> 
            <intent-filter android:priority="1000"> 
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
            </intent-filter> 
        </receiver> 
    </application>
</manifest>

私のSmsReceive.javaはこのようなものです

package com.amin_amini.smstestmobi;

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 str = "";            
    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]);                
            str += "SMS from " + msgs[i].getOriginatingAddress();                     
            str += " :";
            str += msgs[i].getMessageBody().toString();
            str += "\n";
        }
        //---display the new SMS message---
        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
    }                   
    Toast.makeText(context, "Hey", Toast.LENGTH_SHORT).show();
    }
}

私の問題はmanifest.xmlにあると確信しています。

 Toast.makeText(context, "Hey", Toast.LENGTH_SHORT).show();

何も表示しないでください。
私は何をすべきか ?

編集:私たちの友人が以下のように言ったように私は使用しました

    Log.i("Hey","Hey" );

私の関数では、LogCatには何も表示されないので、私の問題は私にあると確信していますAndroidManifest.xml注:HTCSensationでandroid4.0.3を使用しています

4

2 に答える 2

4

レシーバーコードをそれに変更してください。それでもうまくいかない場合は、優先度が高く、ブロードキャストサービスを中止する別の SMS アプリをインストールしている可能性があります。

     <receiver android:name=".SmsReceiver"> 
        <intent-filter android:priority="1000">
            <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>
于 2012-12-15T16:33:22.753 に答える
1

はい、あなたのコードはここで正常に動作しています。

これは私のアンドロイドマニフェストです

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

そして私はこれらの許可を追加しました

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

またはこのコードをダウンロードしてください..私はこれを作りました。SMS を受信し、ダイアログ ボックスに表示されます。

于 2012-12-15T10:42:51.313 に答える