2015-08-14 58 views
0

我開發一個Android應用程序,以檢測未接來電和我附上下面來電接收器不工作

AndroidManifest.xml中所有的值編碼的:

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


<receiver android:name="com.mypackage.MyReceiver" android:enabled="true"> 
<intent-filter> 
<action android:name="android.intent.action.PHONE_STATE" /> 
</intent-filter></receiver> 

MyReceiver.java:

public class MyReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) 

{ 

      String state=intent.getStringExtra(TelephonyManager.EXTRA_STATE); 

      Toast.makeText(context,"Incoming call", Toast.LENGTH_SHORT).show(); 

      if(state==null) 
      { 
       Toast.makeText(context,"Null", Toast.LENGTH_SHORT).show(); 

       return; 
      } 

      if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)) 
      { 
       Toast.makeText(context,"Ringing", Toast.LENGTH_SHORT).show(); 

      } 

      if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) 
      { 
       Toast.makeText(context,"Call received", Toast.LENGTH_SHORT).show();          
      } 

      if(state.equals(TelephonyManager.EXTRA_STATE_IDLE)) 
      { 
       Toast.makeText(context,"Idle", Toast.LENGTH_SHORT).show(); 

      } 


}} 

另外我有兩個活動在我的項目(一個主要活動)。我認爲代碼是完美的,乾淨的。但它不起作用。我的接收器未檢測到任何來電,因爲Toast在接到呼叫時未顯示。這意味着onReceive()方法在接到來電時根本不會被呼叫。

我已經嘗試在建議#1對同一問題的各種解決方案要求過不了多久..但沒有什麼是解決我的問題..

如果有人提出一個解決方案,它西港島線是更有幫助...

+0

您是否在清單中定義了接收器? – Rajesh

+0

只是編輯d後。抱歉造成不便.. – Jeeva

+0

你有沒有給你的MyReceiver類的接收者清單正確的路徑,即「com.mypackage.MyReceiver」 – Gautam

回答

0

您的意圖過濾器結束標記中存在拼寫錯誤。 您已使用</intent-filter/>,因爲它應該是</intent-filter>。他們是額外/關閉標籤。已更改的代碼 -

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


    <receiver android:name="com.mypackage.MyReceiver" android:enabled="true"> 
    <intent-filter> 
    <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
    </receiver> 
+0

對不起兄弟....它不幫助...仍然繼續同樣的問題... – Jeeva

+0

我糾正D錯字後d .... – Jeeva