android-如何在广播接收器的帮助下检测来电?

我正在尝试通过广播接收器识别传入的呼叫.我无法这样做!实际上,我无法“触发”广播!

这是我的代码

activate.setonClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                Toast.makeText(getApplicationContext(),"Clicked",1).show();
                final String broADCAST_ACTION_NAME = ".broadcastMM";
                Intent intent = new Intent();  
                intent.setAction(broADCAST_ACTION_NAME);        
                sendbroadcast(intent); 


            }                                           
            }

我不知道是否曾经触发过这个“ sendbroadcast”!在我的广播接收器文件中:

public void onReceive(Context context, Intent intent)
    {
        if(intent.getAction()=="android.intent.action.PHONE_STATE"){
        Toast.makeText(c,"broadCast fired!",1).show();}
        Bundle extras = intent.getExtras();
        String state = extras.getString(TelephonyManager.EXTRA_STATE);
        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
            Toast.makeText(context, "Ringing", 1).show();
        }
}       

我的清单文件

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

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

我缺少一些逻辑吗?我刚接触Android,因此请帮帮我.

解决方法:

intent.getAction()=="android.intent.action.PHONE_STATE"

应该

TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(intent.getAction());

由于这是比较字符串(与equals())的方式.

另外,您用于广播的代码绝不应该广播-没有“ .broadcastMM”操作.尝试改写一个明确的代码

 Intent intent = new Intent(v.getContext(),broadcastMM.class);  
 sendbroadcast(intent);

您也很可能无法广播android.intent.action.PHONE_STATE,因此,如果您做出明确的Intent,则if不会被执行.

如果您真的想检查自己的broadcastReceiver是否正常工作,请将打印输出/ Toasts放在所有ifs之外.然后,一旦确定broadcastReceiver响应,请进行检查.不过请记住,由于您仅侦听一个Intent-Filter,因此检查Intent是否为PHONE_STATE Intent的if有点多余.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...