如何在Android 6.0上请求运行时记录权限? [英] How to request run-time recording permission on Android 6.0?

查看:136
本文介绍了如何在Android 6.0上请求运行时记录权限?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从Android 6.0开始,我们需要在应用运行时请求权限.

Since Android 6.0, we need to request permissions during app runtime.

在我的应用中,我正在使用本地存储,摄像头,地理位置和录音权限.

In my app, i'm using local storage, camera, geolocation and audio recording permissions.

因此,使用该代码段请求本地存储,摄像头和地理位置定位是可以的: https://github.com/appcelerator-developer-relations/appc-sample-ti510/blob/master/app/controllers/permissions.js

So, requesting for local storage, camera and geolocation is ok with that snippet : https://github.com/appcelerator-developer-relations/appc-sample-ti510/blob/master/app/controllers/permissions.js

但是我还没有找到如何请求音频录制权限的方法...我实际上使用了适用于Android的titutorial.audiorecorder模块,并且由于未启用录制权限而自Android 6.0开始尝试录制时崩溃了.

But i've not found how to request for audio recording permission...I actually use titutorial.audiorecorder module for Android and it crashes when i tried to record since Android 6.0 because permission for recording is not enable.

有关我的环境的更多信息:

More informations on my environment :

Operating System

Name                        = Mac OS X
  Version                     = 10.11.3
  Architecture                = 64bit
  # CPUs                      = 4
  Memory                      = 17179869184

Node.js
  Node.js Version             = 0.12.7
  npm Version                 = 2.11.3

Titanium CLI
  CLI Version                 = 5.0.6

Titanium SDK
  SDK Version                 = 5.2.0.GA
  SDK Path                    = /Users/****/#/mobilesdk/osx/5.2.0.GA
  Target Platform             = android

Appcelerator Studio 4.5.0.201602170821

tiapp.xml

tiapp.xml

<manifest>
    <uses-sdk android:minSdkVersion="15"/>
    <uses-sdk android:targetSdkVersion="23"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
    <uses-permission android:name="com.mycompany.myapp.permission.MAPS_RECEIVE"/>
...
...

</manifest>

推荐答案

您需要 ti.permissions 模块和TiSDK的重新编译版本:

You need the ti.permissions module and a recompiled version of TiSDK :

  • 进入Titanium SDK目录,例如:/Users/[YOUR USER]/Library/Application Support/Titanium/mobilesdk/osx/
  • 复制5.2.0.GA目录并将其重命名为5.2.0.WhatYouWant
  • 进入android子目录,并用以下jar替换titanium.jar:.
  • Go under your Titanium SDK directory eg: /Users/[YOUR USER]/Library/Application Support/Titanium/mobilesdk/osx/
  • Duplicate the 5.2.0.GA directory and rename it as 5.2.0.WhatYouWant
  • Go under android subdir and replace titanium.jar with this jar : https://github.com/AppWerft/Tierstimmenarchiv/blob/master/modules/android/titanium.jar
  • After that in your project, inside the tiapp.xml replace <sdk-version>5.2.0.GA</sdk-version> with your new named SDK (5.2.0.WhatYouWant) don't forget to insert <uses-permission android:name="android.permission.RECORD_AUDIO"/> inside the tiapp.xml under the <android .... > node

然后,您可以使用以下代码段请求存储权限:

and after that, you can request storage permission with this snippet:

if (!require('ti.permissions').hasPermission('android.permission.RECORD_AUDIO'))
require('ti.permissions').requestPermissions(['android.permission.RECORD_AUDIO'], function(e) {
    if (e.success != 0)
        Ti.API.debug("Permissions OK");
    else
        Ti.API.warn("Permissions denied");
});

这篇关于如何在Android 6.0上请求运行时记录权限?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆