Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓权限赢得';行不通_Java_Android - Fatal编程技术网

Java 安卓权限赢得';行不通

Java 安卓权限赢得';行不通,java,android,Java,Android,我正在尝试在android中用java录制声音,但应用程序崩溃,出现以下异常: E/AndroidRuntime:致命异常:计时器-0 进程:com.example.mathieu.telefony1,PID:31353 java.lang.RuntimeException:setAudioSource失败 但这很奇怪,因为我将它添加到了AndroidManifest.xml中 <uses-permission android:name="android.permission.INTERN

我正在尝试在android中用java录制声音,但应用程序崩溃,出现以下异常:

E/AndroidRuntime:致命异常:计时器-0 进程:com.example.mathieu.telefony1,PID:31353 java.lang.RuntimeException:setAudioSource失败

但这很奇怪,因为我将它添加到了AndroidManifest.xml中

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application...

检查运行时权限

对于操作系统高于安卓L的设备,出于安全目的,还提供了一些额外的功能。您必须在运行时再次检查一些有风险的权限,如果这些权限不是由用户授予的,那么您必须请求授予它

有关更多信息,请参阅


在API级别23以上,您将获得以下务实的许可:

 private static final int PERMISSION_REQUEST_CODE = 1;

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {

    if (checkSelfPermission(Manifest.permission.SEND_SMS)
            == PackageManager.PERMISSION_DENIED) {

        Log.d("permission", "permission denied to SEND_SMS - requesting it");
        String[] permissions = {Manifest.permission.SEND_SMS};

        requestPermissions(permissions, PERMISSION_REQUEST_CODE);

    }
}

Android文档的官方版本:

警告:使用setDataSource()时,必须捕获或传递IllegalArgumentException和IOException,因为您引用的文件可能不存在


确保音频文件存在,并且声明了运行时权限(适用于Api 23+)和清单权限。

您的设备操作系统版本?您在哪个Android版本上运行此文件,您的
目标版本是什么?
?如果您应该使用运行时许可证的可能副本,请查看此信息。可能的副本的可能副本请在您的活动上使用此回调请求许可证结果检查您是否已收到许可证。如果用户拒绝许可,则必须设计回退机制。这是不完整的。你也应该检查一下;)我知道,但您可以使用此代码授予权限。请求权限;)是的,但是你应该有一个确切的答案,这就是使用回调方法来获得用户的答案为什么否定解释。。。?
 private static final int PERMISSION_REQUEST_CODE = 1;

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {

    if (checkSelfPermission(Manifest.permission.SEND_SMS)
            == PackageManager.PERMISSION_DENIED) {

        Log.d("permission", "permission denied to SEND_SMS - requesting it");
        String[] permissions = {Manifest.permission.SEND_SMS};

        requestPermissions(permissions, PERMISSION_REQUEST_CODE);

    }
}