【发布时间】:2018-05-17 22:44:52
【问题描述】:
我一直在尝试访问通话记录,但请求权限似乎不起作用
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.stanrares.firstapp">
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
请求权限的函数:
public void EnableRuntimePermissionToAccessCallLogs()
{
Log.i(TAG,"EnableRuntimePermissionToAccessCallLogs called");
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED)
{
Log.i(TAG,"giving read call log permission");
// TODO: Consider calling
// ActivityCompat#requestPermissions
ActivityCompat.requestPermissions(getActivity(),
new String[]{Manifest.permission.READ_CALL_LOG},
1);
Log.i(TAG,"giving read call log permission 2");
}
if(ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_CALL_LOG) != PackageManager.PERMISSION_GRANTED)
{
Log.i(TAG,"giving write call log permission");
ActivityCompat.requestPermissions(getActivity(),
new String[]{Manifest.permission.WRITE_CALL_LOG},
1);
Log.i(TAG,"giving write call log permission 2");
}
Log.i(TAG,"EnableRuntimePermissionToAccessCallLogs called 2");
}
我已经尝试使用工具删除清单文件中的命名空间
【问题讨论】:
-
“似乎不起作用”——这究竟是什么意思?
-
没有弹出请求权限,应用崩溃
-
引起:java.lang.SecurityException:权限被拒绝:从 ProcessRecord{b85e01b 17217:com.example.stanrares.firstapp/u0a107} 打开提供程序 com.android.providers.contacts.CallLogProvider (pid= 17217, uid=10107) 需要来自 logcat 的 android.permission.READ_CALL_LOG 或 android.permission.WRITE_CALL_LOG
-
什么时候给
EnableRuntimePermissionToAccessCallLogs()打电话?在调用需要这些权限的方法之前,您是否等待调用onRequestPermissionsResult()(授予权限)? -
也许通过较早的测试,您有效地为该组做了“不再询问”。尝试完全卸载并重新安装您的应用程序。此外,我强烈建议您为所有需要的权限调用一次
requestPermissions(),而不是每个权限一次。
标签: android permissions manifest