2015-08-14 32 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