Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
现象:
写了个apk测试录音,提示:
01-22 00:59:40.795 215 948 W ServiceManager: Permission failure: android.permission.RECORD_AUDIO from uid=10055 pid=1257
01-22 00:59:40.795 215 948 E : Request requires android.permission.RECORD_AUDIO
01-22 00:59:40.795 215 948 E AudioFlinger: openRecord() permission denied: recording not allowed
01-22 00:59:40.795 1257 1257 E AudioRecord: AudioFlinger could not create record track, status: -1
01-22 00:59:40.798 1257 1257 E AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
01-22 00:59:40.798 1257 1257 E android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
原因:
Android6.0之后对权限的管理更加严格了,permission:android.permission.RECORD_AUDIO 属于危险权限,需要弹出窗口让用户确认。
解决方法:
按照帖子 http://blog.csdn.net/lmj623565791/article/details/50709663 弹出对话框的方法当然是可以的,不过更快的一个方法是提升apk权限,比如提升apk权限到system
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.pcmrecorder"
android:sharedUserId="android.uid.system"
>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)