Android Marshmallow 上的 Ionic App 反复请求许可,即使在授予许可后也是如此
Ionic App on Android Marshmallow repeatedly asking for permission, even after granting it
每当我尝试 select 我图库中的图片时,权限 window 就会弹出,询问是否应该允许该应用程序访问我的媒体存储。
允许后一切正常。然而,下次我想 select 我图库中的图片时,该应用程序再次请求相同的权限。
以下是我的 cordova 相机插件的选项:
image_options = {
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
correctOrientation: true,
cameraDirection: 0,
allowEdit: true,
encodingType: Camera.EncodingType.JPEG
};
这里是(生成的)AndroidManifest.xml
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.mycompany.myapp" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="de.appplant.cordova.plugin.background.ForegroundService" />
</application>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>
我已确保在设置中也允许该应用程序访问 "Storage"。
有什么明显的我可能做错的地方吗?
经过几天的谷歌搜索和尝试,我终于通过手动将 CAMERA 权限添加到 android 清单解决了这个问题。
首先,我的印象是完整的清单是在 ionic build/run 上创建的。其次有点奇怪我必须添加相机权限才能获得存储权限才能工作,特别是因为拍照没问题。
每当我尝试 select 我图库中的图片时,权限 window 就会弹出,询问是否应该允许该应用程序访问我的媒体存储。 允许后一切正常。然而,下次我想 select 我图库中的图片时,该应用程序再次请求相同的权限。
以下是我的 cordova 相机插件的选项:
image_options = {
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
correctOrientation: true,
cameraDirection: 0,
allowEdit: true,
encodingType: Camera.EncodingType.JPEG
};
这里是(生成的)AndroidManifest.xml
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.mycompany.myapp" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="de.appplant.cordova.plugin.background.ForegroundService" />
</application>
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>
我已确保在设置中也允许该应用程序访问 "Storage"。
有什么明显的我可能做错的地方吗?
经过几天的谷歌搜索和尝试,我终于通过手动将 CAMERA 权限添加到 android 清单解决了这个问题。 首先,我的印象是完整的清单是在 ionic build/run 上创建的。其次有点奇怪我必须添加相机权限才能获得存储权限才能工作,特别是因为拍照没问题。