通过BroadcastReceiver监听来电,无需PhoneStateIntentReceiver或PhoneStateListener

2024-01-07

有没有办法通过扩展BroadcastReceiver来监听操作系统的广播来监听来电,而不使用PhoneStateIntentReceiver或PhoneStateListener。 另请告诉我清单中的操作和权限是什么。

我尝试过如下操作,但它不适用于传入呼叫,但适用于传出呼叫

app仅有1个.java文件如下(该app只有1个.java文件和1个manifest文件)

package com.crsardar.media.audio;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class IncommingCallReceiverCRS extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e("Chitta : ", "Its working");          
    }
}

manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.crsardar.media.audio"
      android:versionCode="1"
      android:versionName="1.0">
  <application android:icon="@drawable/icon" android:label="@string/app_name">

    <receiver android:name="IncommingCallReceiverCRS" android:enabled="true"> 
        <intent-filter>
            <!--action android:name="android.intent.action.NEW_OUTGOING_CALL"/-->
            <action  android:name="android.intent.action.ANSWER" >
            <category  android:name="android.intent.category.DEFAULT" /> 
        </intent-filter>
    </receiver>

  </application>

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

您在清单中定义的操作不正确。这是一个操作意图,可用于接听电话而不是监听来电。

您可以使用两个广播接收器来收听ACTION_PHONE_STATE_CHANGED http://developer.android.com/reference/android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED and 新拨出电话 http://developer.android.com/reference/android/content/Intent.html#ACTION_NEW_OUTGOING_CALL广播意图。

当有新的来电、呼叫应答或挂断时,将会收到 ACTION_PHONE_STATE_CHANGED(有关此 Intent 收到的 EXTRA 的文档,请参阅文档)。

当您的设备上有新的拨出呼叫时,将收到 NEW_OUTGOING_CALL。

至于权限,我认为您在清单中得到了正确的信息(我假设 RECORD_AUDIO 权限用于您应用程序中的其他内容)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过BroadcastReceiver监听来电,无需PhoneStateIntentReceiver或PhoneStateListener 的相关文章

  • 如何使用 Android 和 (7.0) 使用 Google API 创建 AVD?

    当我下载并为 AVD 选择 N API 24 时 我在右下角看到以下消息 考虑使用带有 Google API 的系统映像来启用 Google Play 服务测试 此图片还不能使用吗 或者我错过了什么 我在 SDK 管理器中还没有看到它 从
  • 通过附加上下文改进 Android 语音识别

    据我了解 Android API 使用谷歌语音识别服务进行语音转文本 我已经学习了 API 我发现它非常简单 只需将语音转换为单词数组即可 有什么方法可以提高识别率 我的意思是 如果我知道上下文 我可以向服务发送一些参数以提高识别率吗 或者
  • Android 键盘调整大小

    我正在开发一个应用程序 其中包含 Activity 和Fragment 在片段布局中 我使用相对布局作为父布局 底部和滚动视图之间的一个按钮 Scrollview包含编辑文本框 如果我点击最后一个editTextBox在滚动视图中我的键盘隐
  • 如何以编程方式检查应用程序是否在调试模式下运行?

    我必须在应用程序中的某个位置确定我的应用程序是在调试模式还是实时模式下运行 是否有任何函数或代码可用于检查 在开 关两种情况下都会返回 true false 如果是这样 请帮助我 提前致谢 从问题中尚不清楚调试模式是否指的是 应用程序是否可
  • 无法将 LocalBroadcastManager 添加到 Android Studio 中的项目

    我想我现在已经尝试了一切 我一直在堆栈溢出 我什至咨询过android文档 这里的大多数帖子都展示了如何在 Eclipse 中添加 jar 文件 android 工具 gt 添加支持库 或其他内容 所以我尝试按照文档告诉我的方式进行操作 方
  • Android Marketplace 的进入/会员费用是多少? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我不记得可以立即访问此信息 上个月我读到 在谷歌的Android应用市场中 无需预先批准 但需要注册 需要进行分发 开发人员需要注册为开发人员 费用为
  • Android 设备监视器未在 Mac 上的 android studio 中打开

    当我尝试在 android studio 中打开 android 设备监视器时 它显示以下错误 下面是我的日志文件 有人可以建议我解决方案吗 SESSION 2017 01 26 16 39 56 119 eclipse buildId u
  • 错误的本机调用堆栈

    我在 crashylitics 显示本机崩溃的正确调用堆栈时遇到问题 它以前可以工作 但现在调用堆栈要么没有意义 要么名称丢失 我已通过查看 crashylitics 日志文件来确保符号正在上传 那里一切看起来都很好 我进行了一次崩溃测试
  • 将 JSON 解析为 ListView

    好吧 我已经查看了大量有关解析 JSON 结果的示例 但没有运气 我有下面的 JSON 示例 我现在不需要状态信息或地理位置 我只想使用 station 对象并从数组中选择一些内容以列表形式显示在我的 ListView 中 我不明白那里的任
  • Audiomanager 扬声器不工作

    我正在尝试在通话时启用扬声器 final AudioManager audioManager AudioManager context getSystemService Context AUDIO SERVICE audioManager
  • 如何动态设置每个 Gridview 图像项的边框

    我想显示每个 gridview 项目的不同边框 我如何动态地为每个项目设置边框
  • 当选择edittext时,主题/样式不会改变

    我的注册表单中有 Edittext 当用户触摸编辑文本时 编辑文本框变为绿色 表示选择了编辑文本 我不希望这样 当用户选择任何编辑文本时 行吹编辑文本保持白色 请检查此图片以获取更多说明 https i stack imgur com sl
  • 使用 Robotium 缓慢或快速向上拖动(滚动)

    这是我用于拖动当前屏幕的代码 int screenWidth getActivity getWindowManager getDefaultDisplay getWidth int screenHeight getActivity getW
  • 如何以编程方式在 Android 中的特定 firebase FCM 注册令牌上发送推送通知

    我想知道有什么方法可以在特定的 FCM 注册令牌 设备令牌 上以编程方式发送推送通知 我已经实现了群聊 但陷入了一对一的聊天 我根本不想使用任何网络服务或任何后端 因为我在我的应用程序中使用 Firebase 数据库和存储作为后端 我想将上
  • 如何停止和重新启动 Android 仪器测试中的活动?

    我正在尝试编写一个停止的 Android 活动仪器测试 onPause then onStop 并重新启动当前活动 我试过 activity finish activity getActivity 但这似乎不能正常工作 测试的目的是断言表单
  • 使用 overridePendingTransition 时,在被调用的 Activity 中修改 UI 视图非常慢

    前几天更新的时候遇到了一个问题Action Bar基于结果的菜单图标AsyncTask 根据 AsyncTask 结果立即更新操作栏菜单项 https stackoverflow com questions 29239804 updatin
  • 如何在 Android 设备(平板电脑和手机)方向更改时获得正确的窗口宽度

    我正在尝试使用 jquery 函数计算 Android 设备方向变化时的窗口宽度 window outerWidth true 此计算给出了两个方向变化的正确宽度iphone and ipad但在安卓中不行 如果我最初以横向模式或纵向模式加
  • Android Studio Gradle 出现本机库错误

    对不起我的英语不好 我有最后一个 android studio 2013 年 6 月 14 日 创建新的 Android 项目 将 so 文件添加到 libs armeabi 编辑 build gradle 为 buildscript re
  • Handler.removeCallbacksAndMessages(null) 和主循环

    在片段的 onDestory 中 我放置了代码来清理我开始使用 Handler postDelayed 的所有挂起的可运行对象 mUiHandler removeCallbacksAndMessages null 我在这里有一个问题 调用
  • unityLibrary:compileDebugJavaWithJavac

    所以当我单击 构建项目 时 它显示 零错误 但我仍然得到这个 Executing tasks clean unityLibrary assembleDebug launcher assembleDebug in project C User

随机推荐