- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序帮助用户管理whatsapp贴纸link to app并且它在第一个版本中支持 SDK30,但是在该版本之后,当我尝试更新新版本的应用程序 Playstore 时,我的应用程序状态被拒绝,我尝试了多次,我已经在应用程序描述甚至应用程序中提到了权限的原因在请求许可时,但我的应用程序没有更新,我的应用程序的简短描述和长描述都没有更新。
我也填写了敏感许可表,每当我尝试发布新版本时谷歌发送给我
Publishing Status App Status: Rejected
Your app has been rejected and wasn't published due to a policyviolation. If you submitted an update, the previous version of yourapp is still available on Google Play.
Issue: Access to device storage not required
The feature you identified does not require unrestricted access todevice storage. There are other privacy friendly options for accessingfiles in shared storage, such as using the system file picker, or,depending on the use case, you can follow the recommendations forreceiving data from other apps listed here.
Please update your app so that the feature uses a privacy friendlyalternative and remove All Files Access (MANAGE_EXTERNAL_STORAGE)permission.
Policy: All Files Access Permission
Files and directory attributes on a user's device are regarded aspersonal and sensitive user data subject to the Personal and SensitiveInformation policy and the following requirements:
Apps should only request access to device storage which is criticalfor the app to function, and may not request access to device storageon behalf of any third-party for any purpose that is unrelated tocritical user-facing app functionality. Android devices runningAndroid "R" (Android 11) or later, will require theMANAGE_EXTERNAL_STORAGE permission in order to manage access in sharedstorage. All apps that target R or later and request broad access toshared storage ("All files access") must successfully pass anappropriate access review prior to publishing. Apps allowed to usethis permission must clearly prompt users to enable "All files access"for their app under "Special app access" settings. For moreinformation on the R requirements, please see this help article.
Read more about Use of All Files Access Permission See Android storageuse cases and best practices and how to open files using storageaccess framework Address this issue in the Play Console. Issue: Nota core feature
The feature you identified that is dependent on this permission doesnot appear to be critical to the core functionality of your app.
Core functionality is defined as the main purpose of the app. Withoutthis core functionality, the app is "broken" or rendered unusable. Thecore functionality, as well as any core features that comprise thiscore functionality, must all be prominently documented and promoted inthe app's description.
Please update your app so that the feature does not use thispermission or ensure that the core functionality is prominentlydocumented and promoted in the app's description and resubmit your appon Play Developer console.
Policy: All Files Access Permission
Files and directory attributes on a user's device are regarded aspersonal and sensitive user data subject to the Personal and SensitiveInformation policy and the following requirements:
Apps should only request access to device storage which is criticalfor the app to function, and may not request access to device storageon behalf of any third-party for any purpose that is unrelated tocritical user-facing app functionality. Android devices runningAndroid "R" (Android 11) or later, will require theMANAGE_EXTERNAL_STORAGE permission in order to manage access in sharedstorage. All apps that target R or later and request broad access toshared storage ("All files access") must successfully pass anappropriate access review prior to publishing. Apps allowed to usethis permission must clearly prompt users to enable "All files access"for their app under "Special app access" settings. For moreinformation on the R requirements, please see this help article.
Read more about Use of All Files Access Permission See Android storageuse cases and best practices Address this issue in the Play Console.
Issue: Need to use Media Store APIYou have requested access to All Files Access permission but itappears that your app's core feature requires access to only MediaFiles. With the MediaStore API, apps can contribute and access mediathat's available on an external storage volume without the need forthe access all files permission.
Please update your app so that the feature uses Media Store APIs andremove All Files Access (MANAGE_EXTERNAL_STORAGE) permission.
Policy: All Files Access Permission
Files and directory attributes on a user's device are regarded aspersonal and sensitive user data subject to the Personal and SensitiveInformation policy and the following requirements:
Apps should only request access to device storage which is criticalfor the app to function, and may not request access to device storageon behalf of any third-party for any purpose that is unrelated tocritical user-facing app functionality. Android devices runningAndroid "R" (Android 11) or later, will require theMANAGE_EXTERNAL_STORAGE permission in order to manage access in sharedstorage. All apps that target R or later and request broad access toshared storage ("All files access") must successfully pass anappropriate access review prior to publishing. Apps allowed to usethis permission must clearly prompt users to enable "All files access"for their app under "Special app access" settings. For moreinformation on the R requirements, please see this help article.
Read more about Use of All Files Access Permission See Android storageuse cases and best practices and how to access media files from sharedstorage Address this issue in the Play Console.
最佳答案
使用 MANAGE_EXTERNAL_STORAGE
这不是一个好主意,除非您的应用程序是文件管理器、防病毒软件或清洁器应用程序。但是,在您的情况下,您只需要访问特定文件夹,即 /sdcard/emulated/0/WhatsApp
.我们仍然有一个解决方法,可以通过 Storage Access Framework 授予此文件夹的完全访问权限。文件夹选择器。
您可以通过 Intent.ACTION_OPEN_DOCUMENT_TREE
强制用户选择 WhatsApp 文件夹, 然后用 ContentResolver#takePersistableUriPermission()
保存权限状态.但是编写自己的代码来处理这个问题可能需要付出很多努力。
我建议你使用SimpleStorage .因为它更简单:
class MainActivity : AppCompatActivity() {
private val storageHelper = SimpleStorageHelper(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
storageHelper.onStorageAccessGranted = { _, root ->
Toast.makeText(
this,
"Folder ${root.getAbsolutePath(this)} is accessible now.",
Toast.LENGTH_SHORT
).show()
}
btnRequestStorageAccess.setOnClickListener {
// Force the user to select directory /sdcard/emulated/0/WhatsApp
// The access will be granted once the user selected this folder,
// and then you can explore this directory.
storageHelper.requestStorageAccess(
requestCode = REQUEST_CODE_STORAGE_ACCESS,
initialRootPath = StorageType.EXTERNAL,
expectedStorageType = StorageType.EXTERNAL,
expectedBasePath = "WhatsApp"
)
}
}
override fun onSaveInstanceState(outState: Bundle) {
storageHelper.onSaveInstanceState(outState)
super.onSaveInstanceState(outState)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
storageHelper.onRestoreInstanceState(savedInstanceState)
}
}
这个答案可能不符合你的期望,但你可以试试这个替代方案。
关于android - PlayStore 不断拒绝应用更新以获得 MANAGE_EXTERNAL_STORAGE 权限,并且应用描述也没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68139593/
我正在为我的雇主编写脚本,以从他们自己的站点获取某些数据。出于一长串原因,我需要从网站上获取数据,如图所示。我发现,其中一些数据是通过 js 调用检索的... 回想起来,我应该选择 Mechanize
我正在使用 python 和 cryptography.io 来签署和验证消息。我可以通过以下方式获得签名的 DER 编码字节表示: cryptography_priv_key.sign(messag
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
是否可以区分 ECDF?以下面得到的为例。 set.seed(1) a <- sort(rnorm(100)) b <- ecdf(a) plot(b) 我想对 b 求导以获得它的概率密度函数 (PD
我找到了如何从 navigator.mimeTypes 获取 mimetypes: function GetMimeTypes() { var message = ""; var mi
我在表单中使用单选按钮来隐藏/显示联系人表单中的成员 ID 字段。问题是,当 javascript 更改 html 中包含的隐藏 id 字段(该字段设置为“无”值)时,该字段将不再通过 post 可用
我正在做单元测试。我必须测试所有可能的if..else情况。但是在此if语句中: int32_t i32Res = snprintf(buffer, len, "The%d_String_%d", 0
我有一个 Facebook 应用程序,我想从中获取“喜欢”的总数。我想知道这是否可能。 其中 ID 是应用程序的 ID,ACCESS_TOKEN 是我尝试过的应用程序的当前访问 token : gra
如果我有多个计算实例尝试同时获取同一个 blob 的租约,则似乎经常会成功。我的印象是,一旦租约发出(并因此被客户获得),就不可能同时发出另一个租约? 我希望情况确实如此,我一直在 Azure 中使用
这是我的索引 POST /blogs/1 { "name" : "learn java", "popularity" : 100 } POST /blogs/2 { "name" : "l
我正在将 Symfony2 与 FOSUserBundle 一起使用。我需要为用户获得最高角色。 role_hierarchy: ROLE_CONTRIBUTOR: ROLE_USER
我正在向服务器发送基于 REST 的请求。我希望尽快得到答复,并希望了解可以进行的各种优化。 一种方法当然是在线程中并行发送这些请求。还有哪些其他选项可用于优化此功能? 在服务器上,可以添加哪些配置?
这可能是某种重复的问题,但我似乎找不到合适的解决方案。我正在使用 git4idea.history.GitHistoryUtils.history() 获取提交列表。如果 checkout 其中一个较
我正在做一个程序,可以输入每周的工资和那一周的总工作时间。它应该以小时工资率显示答案。但是我无法显示正确的“centavos/2 decimal places”公式并且它不想使用 float % fl
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我已经尝试了 mContext.getMainLooper() 和 Looper.getMainLooper()。两者都返回相同的结果,但我想知道哪种方法正确? 我还从 Android 开发人员链接中
我有一个“affiliates”表,其中包含“user”和“referredBy”列。 给定一个用户,我希望获得该用户推荐的所有“n 级”玩家。对于 n=1,我们只关心您直接推荐的玩家数量: SELE
我在 PostgreSQL 9.5 数据库中有两个表: project - id - name task - id - project_id - name - updated_
请帮助我怎样才能得到我预期的结果,在此先感谢并抱歉我的英语不好。 PHP: $dog = implode(',', $data['dogbreed']); $query .= "AND `do
我有 let impulse = CGVectorMake(CGFloat(Constants.impulse), 0) 如何在不创建另一个 CGVector 的情况下得到它的负值? 我正在考虑在 C
我是一名优秀的程序员,十分优秀!