- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用具有 READ_PHONE_STATE
权限的 BroadcastReceiver
。我要求用户获得运行权限(Android M),但毕竟我得到了权限拒绝:
W/BroadcastQueue: Permission Denial: receiving Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } to com.pb.qostest/.network.PhoneStateBroadcastReceiver requires android.permission.READ_PRIVILEGED_PHONE_STATE due to sender android (uid 1000)
对于权限,我使用来自此链接的代码:https://stackoverflow.com/a/38764861
到目前为止,我希望我的手机状态 BroadcastReceiver
只打印一些东西,所以它看起来像这样:
public class PhoneStateBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("RECEIEVER", "PhoneStateBroadcastReceiver Receiver started!");
}
}
无论如何,由于上面的权限被拒绝,所以没有打印任何内容。
在 list 中它是:
<receiver
android:name=".network.PhoneStateBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
...
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
知道它应该如何相似或有什么问题吗?
最佳答案
为了能够检测到电话,您需要:
1 在 Manifest.xml 中,定义你的接收器并请求 PHONE_STATE 权限:
<receiver android:name=".network.PhoneStateBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
// ...
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
2 添加一个扩展 BroadcastReceiver 的类 PhoneStateBroadcastReceiver 并覆盖 onReceive()
3 在运行时,request预先获得 PHONE_STATE 许可
ActivityCompat.requestPermissions(myMainActivity,
new String[]{Manifest.permission.READ_PHONE_STATE},
READ_PHONE_STATE_CODE);
通过系统对话框给它
4 打电话
您会看到在 onReceive() 中捕获的 Intent :
intent: Intent { act=android.intent.action.READ_PHONE_STATE flg=0x10 cmp=com.myApp.network.PhoneStateBroadcastReceiver (has extras) }
Action: android.intent.action.PHONE_STATE
希望对你有帮助
关于android - BroadcastReceiver 和 PHONE_STATE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45504593/
我正在开发一个 Android 应用程序,我想在其中获取来电号码,因此我创建了一个基于上下文的接收器并将其注册到我的MainActivity中。但无论应用程序是在前台还是后台,我的接收器都不会被触发。
我正在尝试使用具有 READ_PHONE_STATE 权限的 BroadcastReceiver。我要求用户获得运行权限(Android M),但毕竟我得到了权限拒绝: W/BroadcastQueu
我一直在尝试做类似于 truecaller 应用程序的事情,我的应用程序应该在通话挂断后显示一个屏幕。通过在 manifest 文件中注册 android.intent.action.PHONE_ST
我有两个广播。 一个用于屏幕开/关,第二个用于手机状态。如果屏幕打开,我想向用户显示我的 Activity ,但如果是电话,则不显示。 如何管理这个任何帮助将不胜感激.. 最佳答案 您需要使用 if/
按照本教程:http://www.vogella.de/articles/AndroidServices/article.html#receiver,我创建了自己的项目。 list :
我通过将以下代码 fragment 与 android BroadCastReceiver 结合使用来捕获 android.intent.action.PHONE_STATE 更改事件。我可以成功识别
我试图通过 onrecieve() 方法从 list 文件中注册的以下广播接收器的 intent extra 中检索电话号码。
我刚刚将处于 BETA 状态的应用程序更新到 Firebase 12.0.0,当我要将新版本上传到 Play 商店时收到错误消息,因为我的应用程序正在请求权限 PHONE_STATE我需要向应用程序添
我是一名优秀的程序员,十分优秀!