1

從Android 6.0開始,我們需要在應用運行時請求權限。如何申請Android 6.0的運行時錄製權限?

在我的應用程序中,我使用本地存儲,攝像頭,地理位置和音頻錄製權限。

因此,請求本地存儲,攝像頭和地理位置是確定與片段: https://github.com/appcelerator-developer-relations/appc-sample-ti510/blob/master/app/controllers/permissions.js

,但我沒有找到如何爲錄音許可的請求......實際上我用titutorial.audiorecorder模塊Android和它崩潰時,我試圖記錄自Android 6.0以來,因爲錄製權限未啓用。

在我的環境更多的信息:

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> 

回答

0

您需要ti.permissions模塊和TiSDK的編譯版本:

  • 轉到您的鈦SDK下目錄例如:/Users/[YOUR USER]/Library/Application Support/Titanium/mobilesdk/osx/
  • 複製的5.2.0.GA目錄下子目錄android其重命名爲5.2.0.WhatYouWant
  • 去和這個罐子代替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)不要忘記插入<uses-permission android:name="android.permission.RECORD_AUDIO"/>tiapp.xml<android .... >節點

,並在這之後,你可以請求存儲許可在這個片段中下:

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"); 
}); 
+0

我在/ Users/[me]/Library/Application Support/Titanium/mobilesdk/osx /中看不到我的5.2.0.GA sdk文件夾...我只看到較舊的SDK文件夾3.5.1.GA和5.0.2.GA?!! 5.2.0.GA位置還有其他路徑嗎? – gsoulie

+1

好的,我找到了我的5.2.0.GA sdk路徑並完成了上面的所有操作。我不再有錯誤,但在請求許可後回調函數沒有執行...我使用ti.permissions模塊的最後一個版本(v0.4) – gsoulie

+0

我創建了一個JIRA票據,您可以觀看這個票據以獲得此固定在SDK中:https://jira.appcelerator.org/browse/TIMOB-20544 –