离子3的自定义使用许可 [英] Custom uses-permission with ionic 3
问题描述
在使用Ionic3(cordova 7.0.0 | android@6.2.3)构建的应用程序中,我需要使用麦克风,SIP和互联网访问(WI-FI).
On app builds with Ionic3 (cordova 7.0.0 | android@6.2.3), I need to use microphone, SIP and internet access (WI-FI).
因此,我尝试以这种方式使用edit-config编辑config.xml:
So I try edit config.xml with edit-config in this way:
<edit-config file="AndroidManifest.xml" mode="merge" targe="/manifest">
<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.webkit.PermissionRequest" />
<uses-feature android:name="android.hardware.sip.voip" />
<uses-feature android:name="android.hardware.wifi" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />
</edit-config>
,但未显示任何请求.此外,我希望AndroidManifest.xml具有更多的使用许可密钥(每个请求一个),但是结果是一行,只有RECORD_AUDIO权限.
but no request is shown. Moreover, I wish that AndroidManifest.xml has more uses-permission keys (one for every request) but the result is one row with only permission for RECORD_AUDIO.
我在做什么错了?
感谢您的回答.
推荐答案
To add those permissions you need to use <config-file>
not <edit-config>
, for example:
<config-file parent="/*" target="AndroidManifest.xml">
<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.webkit.PermissionRequest" />
<uses-feature android:name="android.hardware.sip.voip" />
<uses-feature android:name="android.hardware.wifi" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />
</config-file>
但这在Android 6+上还远远不够-您需要请求运行时权限 危险权限.
But that's not enough on Android 6+ - you need to request runtime permission for dangerous permissions.
在Cordova中,您可以将 cordova-diagnostic-plugin 与 requestRuntimePermissions()
,例如:
In Cordova you could do this using cordova-diagnostic-plugin with requestRuntimePermissions()
, e.g.:
cordova.plugins.diagnostic.requestRuntimePermissions(function(statuses){
for (var permission in statuses){
switch(statuses[permission]){
case cordova.plugins.diagnostic.permissionStatus.GRANTED:
console.log("Permission granted to use "+permission);
break;
case cordova.plugins.diagnostic.permissionStatus.NOT_REQUESTED:
console.log("Permission to use "+permission+" has not been requested yet");
break;
case cordova.plugins.diagnostic.permissionStatus.DENIED:
console.log("Permission denied to use "+permission+" - ask again?");
break;
case cordova.plugins.diagnostic.permissionStatus.DENIED_ALWAYS:
console.log("Permission permanently denied to use "+permission+" - guess we won't be using it then!");
break;
}
}
}, function(error){
console.error("The following error occurred: "+error);
},[
cordova.plugins.diagnostic.permission.USE_SIP,
cordova.plugins.diagnostic.permission.RECORD_AUDIO
]);
这篇关于离子3的自定义使用许可的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!