【问题标题】:Incoming call receiver is not working来电接收器不工作
【发布时间】:2015-08-14 07:59:19
【问题描述】:

我正在开发一个 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();

            }


}}

此外,我的项目中有两项活动(一项主要活动)。我认为代码是完美和干净的。但它不起作用。我的 Receiver 没有检测到任何来电,因为在接听电话时不显示 Toast。这意味着在接听来电时根本不会调用 onReceive() 方法。

我已经尝试过 Stackoverflow 中针对不久前提出的同一个问题提出的各种解决方案。但我的问题没有得到任何解决。

如果有人提出解决方案,那将更有帮助...

【问题讨论】:

  • 您是否在清单中定义了接收方?
  • 刚刚编辑了 d 帖子。很抱歉给您带来不便..
  • 您是否在接收器清单中为您的 MyReceiver 类提供了正确的路径,即“com.mypackage.MyReceiver”
  • 是的..我给出了正确的路径....

标签: android broadcastreceiver incoming-call


【解决方案1】:

您的意图过滤器结束标记中有错字。 你已经使用了&lt;/intent-filter/&gt;,它应该是&lt;/intent-filter&gt;。它们是一个额外的 / 用于关闭标签。更改代码 -

    <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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多