سؤال

أحاول كتابة تطبيق بسيط يحاول تلقي رسائل الرسائل القصيرة والتعامل معها. لقد تابعت العديد من البرامج التعليمية ولكني لم أذهب إلى أي مكان ، عندما أرسل رسالة نصية قصيرة إلى المحاكي ، يبدو أن القصد لا يتم إطلاقه أبدًا.

ها هي نيتي:

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>

أقدر حقًا بعض التوجيهات بما يحدث. أنا فقط دخلت في تطوير Android ولكني أعتقد أن رأسي ملفوف حوله. أثناء مراقبة Logcat للمحاكي ، لم تظهر أحداث السجل أبدًا ، ولم يتم ضرب نقاط التوقف عن تصحيح الأخطاء ، لذلك أشعر أنه في مكان ما في مرشح نيتي.

أقوم بتشغيل هذا على Android 2.0.1.

هل كانت مفيدة؟

المحلول

بالإضافة إلى إجابة صاموه (تحتاج إلى إجراء مقارنة كائن على سلسلة الإجراءات ، أو فقط لا تقارن) ، في ملفك البيان الذي أخطأته SMS_RECEIVED.

نصائح أخرى

أعتقد أن ظهورك يبدو بخير ؛ المشكلة مع الخط:

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

وأعتقد أنه ينبغي أن يكون: intent.getAction().equals(ACTION)

امل ان يساعد..

يبدو أن اسم الإجراء يتطلب رأس مال في "Telephony".

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-droid(أردت فقط أن ألاحظ هذا ، لأنني تعثرت على الكثير من البرامج التعليمية التي لم تعد تعمل)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top