如何在Android 6.0上申请运行时录制权限?

时间:2016-03-09 11:30:14

标签: android appcelerator audio-recording appcelerator-titanium runtime-permissions

自Android 6.0起,我们需要在应用运行时期间请求权限。

在我的应用中,我使用本地存储空间,相机,地理定位和录音权限。

因此,请求本地存储,相机和地理定位可以使用该片段: https://github.com/appcelerator-developer-relations/appc-sample-ti510/blob/master/app/controllers/permissions.js

但是我还没有找到如何申请录音权限...我实际上使用了适用于Android的titutorial.audiorecorder模块,当我尝试自Android 6.0以来进行录制时它会崩溃,因为录制许可不会启用。 / p>

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

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

<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>

1 个答案:

答案 0 :(得分:0)

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

  • 转到Titanium SDK目录下,例如:/Users/[YOUR USER]/Library/Application Support/Titanium/mobilesdk/osx/
  • 复制5.2.0.GA目录并将其重命名为5.2.0.WhatYouWant
  • 转到android subdir下,用此jar替换titanium.jarhttps://github.com/AppWerft/Tierstimmenarchiv/blob/master/modules/android/titanium.jar
  • 在您的项目中,在tiapp.xml替换<sdk-version>5.2.0.GA</sdk-version>内,使用新命名的SDK(5.2.0.WhatYouWant),不要忘记在{{1}中插入<uses-permission android:name="android.permission.RECORD_AUDIO"/>tiapp.xml节点

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

<android .... >