문제

SMS 메시지를 받고 처리하려는 간단한 응용 프로그램을 작성하려고합니다. 나는 몇 가지 튜토리얼을 따랐지만 에뮬레이터에 SMS를 보낼 때 아무데도 없다. 의도는 결코 해고되지 않는 것 같습니다.

내 의도는 다음과 같습니다.

package com.neocodenetworks.smsfwd;

import android.content.*;
import android.os.Bundle;
import android.telephony.*;
import android.util.Log;

public class SmsReciever extends BroadcastReceiver {
    private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
    private static final String TAG = "smsfwd";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "Intent recieved: " + intent.getAction());

        if (intent.getAction() == 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) {
                    Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
                    NetComm.SendMessage("me", messages[0].getOriginatingAddress(), messages[0].getMessageBody());
                }
            }
        }
    }
}

그리고 여기 내 AndroidManifest.xml이 있습니다 :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.neocodenetworks.smsfwd"
        android:versionCode="1"
        android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
        <receiver android:name=".SmsReciever">
            <intent-filter>
                <action android:name="android.provider.telephony.SMS_RECIEVED"></action>
            </intent-filter>
        </receiver>
    </application>
    <uses-sdk android:minSdkVersion="6" />
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest>

무엇이 잘못되고 있는지에 대한 지침에 정말 감사합니다. 나는 단지 안드로이드 개발에 들어가고 있지만 머리를 감싸고 있다고 생각합니다 (대부분). 에뮬레이터의 logcat을 모니터링하는 동안 로그 이벤트가 나오지 않으며 디버깅 브레이크 포인트는 결코 맞지 않으므로 의도 필터 어딘가에 있다는 느낌이 들었습니다.

나는 이것을 Android 2.0.1에서 실행하고 있습니다.

도움이 되었습니까?

해결책

에 추가 사무의 대답 (동작 문자열에 대한 객체 비교를 수행하거나 비교하지 않아야합니다), Manifest 파일에서 틀린 파일에서 SMS_RECEIVED.

다른 팁

나는 당신의 매니페스트가 괜찮아 보인다고 생각합니다. 문제는 라인에 관한 것입니다.

if (intent.getAction() == SMS_RECEIVED) {

나는 그것이해야한다고 생각한다 : intent.getAction().equals(ACTION)

도움이되기를 바랍니다 ..

행동 이름은 "Telepony에서"T "가 필요합니다.

android.provider.Telephony.SMS_RECEIVED

을 위한 String 비교해서는 안되는 변수 == 상징, 당신은 비교해야합니다 equals() 방법

이것은 잘못되었습니다

intent.getAction() == SMS_RECEIVED) 

이것은 맞습니다

intent.getAction().equals (SMS_RECEIVED)) 

전화기가 더 이상 사용되지 않기 때문에 (1.0 이후로)이 방법은 더 이상 작동하지 않습니다. 적절한 솔루션이 필요한 경우이 자습서를 확인하십시오.http://mobiforge.com/developing/story/sms-messaging-denroid(더 이상 작동하지 않는 많은 튜토리얼을 우연히 발견했기 때문에 이것을 주목하고 싶었습니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top