2012-11-15 16 views
6

मैं फोनस्टेट लिस्टनर सेट अप करने की कोशिश करता हूं लेकिन मुझे "फोनकॉल लिस्टर को किसी प्रकार से हल नहीं किया जा सकता"।फोनस्टेट लिस्टनर

public class ButtonView extends FrameLayout { 


    PhoneCallListener phoneListener = new PhoneCallListener(); 
    TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); 
    telephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE); 


} 

अन्य उदाहरण में, मैं अपनी इस तरह से लिखा और यह

public class MainActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 

     // add PhoneStateListener 
     PhoneCallListener phoneListener = new PhoneCallListener(); 
     TelephonyManager telephonyManager = (TelephonyManager) this 
      .getSystemService(Context.TELEPHONY_SERVICE); 
     telephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE); 
} 

मैं अपने कोड में क्या बदलना चाहिए बनाने के लिए काम कर काम कर रहा है पाया? मदद के लिए धन्यवाद

+0

http://stackoverflow.com/questions/ 5345470/onclicklistener----------type-eclipse – Omarj

उत्तर

15

आपको फोन कॉल करने के लिए एक रिसीवर बनाना होगा।

ऐसा करने के लिए, अपने Manifest.xml में में इस जोड़ें:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

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

और इन कक्षाओं बनाएँ:

import android.telephony.PhoneStateListener; 
import android.telephony.TelephonyManager; 
import android.util.Log; 
import android.webkit.WebView; 

public class MyPhoneStateListener extends PhoneStateListener { 

    public static Boolean phoneRinging = false; 

    public void onCallStateChanged(int state, String incomingNumber) { 

     switch (state) { 
     case TelephonyManager.CALL_STATE_IDLE: 
      Log.d("DEBUG", "IDLE"); 
      phoneRinging = false; 
      break; 
     case TelephonyManager.CALL_STATE_OFFHOOK: 
      Log.d("DEBUG", "OFFHOOK"); 
      phoneRinging = false; 
      break; 
     case TelephonyManager.CALL_STATE_RINGING: 
      Log.d("DEBUG", "RINGING"); 
      phoneRinging = true; 

      break; 
     } 
    } 

} 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.telephony.PhoneStateListener; 
import android.telephony.TelephonyManager; 

public class ServiceReceiver extends BroadcastReceiver { 
    TelephonyManager telephony; 

    public void onReceive(Context context, Intent intent) { 
     MyPhoneStateListener phoneListener = new MyPhoneStateListener(); 
     telephony = (TelephonyManager) context 
       .getSystemService(Context.TELEPHONY_SERVICE); 
     telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE); 
    } 

    public void onDestroy() { 
     telephony.listen(null, PhoneStateListener.LISTEN_NONE); 
    } 

} 
+1

पर नहीं किया जा सकता है बस Destroy() में एक सुधार। आपको शून्य नहीं होना चाहिए: telephony.listen (फोन लिस्टर, फोनस्टेट लिस्टनर.LISTEN_NONE); फोन लिस्टर को सदस्य बनाया जाना चाहिए। – Pin

+0

हाय। मैं पैरामीटर से आने वाली संख्या प्राप्त नहीं कर सकता हूं। क्यूं कर? – halilkaya

+6

आपके पास रिसीवर में ऑनडेस्ट्रॉय नहीं है। http://developer.android.com/reference/android/content/BroadcastReceiver.html –

संबंधित मुद्दे