代号一首选项/存储权限

Posted

技术标签:

【中文标题】代号一首选项/存储权限【英文标题】:Codename One Preferences/Storage permissions 【发布时间】:2018-10-09 09:07:43 【问题描述】:

我在 Google Play 商店中开发并发布了一个应用程序,它只向 REST API 发送简单的String 请求并将结果存储在Preferences 中。同一个应用也提交到 Windows 应用商店发布,但由于以下原因被拒绝:

应用声明使用敏感功能 [musicLibrary、picturesLibrary、videosLibrary],但似乎没有访问声明的功能。请移除敏感能力声明并重新提交应用。

在检查 Google Play 商店提交后,我注意到请求了相同的权限:

此应用可以访问:

    照片/媒体/文件 读取 USB 存储的内容 修改或删除 USB 存储的内容 存储 读取 USB 存储的内容 修改或删除 USB 存储的内容 其他 从 Internet 接收数据 查看网络连接 完整的网络访问权限 防止设备休眠

所以我的问题是,Preferences 是否真的需要这些权限,或者我可以设置某种构建提示来删除这些权限请求,尤其是对于 UWP 构建?我也尝试设置 android.blockExternalStoragePermission 构建提示,但在 Android 构建中仍然需要权限。由于目前我还没有 Apple Developer 帐户,因此我还没有尝试过 ios 构建。

非常感谢您。

编辑 #1(2018 年 10 月 23 日):

经过进一步检查,我发现我错误地将未声明android.blockExternalStoragePermission的版本上传到了Google Play商店,所以在Android版本上一切正常。

目前我没有使用任何 cn1libs,这是我的应用程序中导入的所有类的列表:

java.util.HashMap java.util.Map java.util.Random com.codename1.components.InfiniteProgress com.codename1.components.ToastBar com.codename1.components.ToastBar.Status com.codename1.io.CharArrayReader com.codename1.io.JSONParser com.codename1.io.Log com.codename1.io.NetworkManager com.codename1.io.Preferences com.codename1.io.rest.Response com.codename1.io.rest.Rest com.codename1.l10n.L10NManager com.codename1.ui.Button com.codename1.ui.Component com.codename1.ui.Container com.codename1.ui.Dialog com.codename1.ui.FontImage com.codename1.ui.Form com.codename1.ui.Label com.codename1.ui.events.ActionEvent com.codename1.ui.events.ActionListener com.codename1.ui.layouts.BorderLayout com.codename1.ui.layouts.FlowLayout com.codename1.ui.layouts.GridLayout com.codename1.ui.plaf.Border com.codename1.ui.plaf.Style com.codename1.ui.plaf.UIManager com.codename1.ui.util.Resources

所以我最初的问题仍然存在,如何设置构建提示以防止 Windows 和 iOS 中的相同外部存储读/写权限?

【问题讨论】:

【参考方案1】:

请参阅标题为“Android 权限”here 的部分,了解可能触发额外权限的一些 API 的列表。我建议从 XML 中提取清单并检查它。根据您的描述,它应该包括两个权限,您应该在那里有两个权限:

android.permission.WRITE_EXTERNAL_STORAGE - 应用 android.blockExternalStoragePermission 时应该禁用它

android.permission.INTERNET - 你真正需要的这个

我假设您有媒体访问权限,这里就变成了它来自哪里的问题?

您是否使用了可能包含触发此功能的 cn1lib?

您的应用中是否有尚未启用的功能?

一旦您在此处获得此调查评论的具体名称或结果,我将修改答案并提供更多详细信息。

【讨论】:

抱歉回复晚了,但请查看我对问题的编辑。非常感谢@ShaiAlmog。 iOS 不需要该权限并且“正常工作”。我在该列表中没有看到任何可疑类,我必须检查 UWP 端口

以上是关于代号一首选项/存储权限的主要内容,如果未能解决你的问题,请参考以下文章

如何保护 Android 共享首选项?

Android:从设置外部更改相机权限会导致应用程序共享首选项清除

Java 中首选项的替代方案

JavaEE 配置文件 应用首选项存储

共享首选项存储在哪里?

SharedPreferences 存储