سؤال

أرغب في استرداد برقم المكالمات الواردة وفعل شيء به مثل القيام به http:/blog.whitepages.com/2009/02/27/caller-id-by-whitepages-a-new-android-app-put-puts-telemarketers-on-alert/

هل يمكن أن تساعدني لأنني لا أستطيع العثور على أي معلومات حول هذا الموضوع. أين أبدأ وكيف أحصل على برقم فوننبرة؟


حسنا، في الوقت الحالي يبدو رمزي أدناه. عندما أقوم بوضع المكالمة، فإن CustombroAtCastReceiver يمسكه ويتم طباعة رسالة السجل. يمكنني استرداد رقم الهاتف من الحزمة. لكن! لا أستطيع الحصول على HTE CustomphonEstatelistener للعمل. كما ترون أنني قمت بتسجيل مستمعي CustomPhoneSponestate إلى جهاز الاستقبال، لكن رسالة السجل لا تحصل على مطبوعة أبدا من فئة CustomPhonEstatelistener. ما أنا في عداد المفقودين هنا؟ هل تفكيري صحيح؟


<receiver android:name=".CustomBroadcastReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" /> 
        </intent-filter>
</receiver>

</application>
<uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

public class CustomPhoneStateListener extends PhoneStateListener {

private static final String TAG = "CustomPhoneStateListener";

public void onCallStateChange(int state, String incomingNumber){

    Log.v(TAG, "WE ARE INSIDE!!!!!!!!!!!");
    Log.v(TAG, incomingNumber);

    switch(state){
        case TelephonyManager.CALL_STATE_RINGING:
            Log.d(TAG, "RINGING");
            break;
    }   
}

public class CustomBroadcastReceiver extends BroadcastReceiver {

private static final String TAG = "CustomBroadcastReceiver";

@Override
public void onReceive(Context context, Intent intent) {
    Log.v(TAG, "WE ARE INSIDE!!!!!!!!!!!");
    TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
    CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();

    telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);


    Bundle bundle = intent.getExtras();
    String phoneNr= bundle.getString("incoming_number");
    Log.v(TAG, "phoneNr: "+phoneNr);

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

المحلول

يستخدم PhoneStateListener. وبعد لديها onCallStateChanged معالج واحدة من الحجج المقدمة التي ستحصل عليها هي String تحتوي على رقم الهاتف الوارد.

نصائح أخرى

طريقة تجاوز الخاص بك في CustomPhoneStateListener يجب أن يسمى onCallStateChanged() (و لا onCallStateChange()).

كان هذا قد تم رصده مترجم جافا إذا كان لديك @Override التوضيحية، كما لديك ل onReceive().

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