我正在开发一个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()方法。
我已经尝试过在Stackoverflow中提出的各种解决方案,不久就会问同样的问题..但没有解决我的问题..
如果有人提出解决方案,那将会更有帮助......
答案 0 :(得分: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>