android REQUEST_IGNORE_BATTERY_OPTIMIZATIONS如何正确操作

axr492tv  于 2024-01-04  发布在  Android
关注(0)|答案(3)|浏览(291)

我在前台模式下有IntentService任务,但在Android M+中,该任务在低电耗模式下停止。如果应用程序使用Intent将自己设置在白名单中,我会读取Google禁止。但是如果我使用权限并选中GRANT或DENIED,我会获得授予的结果,但什么也没有发生。我在白名单中看不到我的应用程序。我如何在白名单中添加应用程序而不被禁止?(我在AndroidManifest.xml中添加了权限)

  1. if(Build.VERSION.SDK_INT>=23){
  2. int permissionCheck= ContextCompat
  3. .checkSelfPermission(this, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
  4. if(permissionCheck == PackageManager.PERMISSION_DENIED){
  5. //Should we show an explanation
  6. if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)){
  7. //Show an explanation
  8. final String message = "";
  9. Snackbar.make(coordinatorLayoutView,message,Snackbar.LENGTH_LONG)
  10. .setAction("GRANT", new View.OnClickListener() {
  11. @Override
  12. public void onClick(View v) {
  13. ActivityCompat.requestPermissions(MainActivity.this, new String[]{ Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS }, PERMISSION_REQUEST_CODE);
  14. }
  15. })
  16. .show();
  17. }else{
  18. //No explanation need,we can request the permission
  19. ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS }, PERMISSION_REQUEST_CODE);
  20. }
  21. }
  22. }

字符串

3okqufwl

3okqufwl1#

REQUEST_IGNORE_BATTERY_OPTIMIZATIONS不是dangerous权限。您不需要或不想要任何代码。引用REQUEST_IGNORE_BATTERY_OPTIMIZATIONS的文档:
应用程序必须持有权限才能使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS。这是一种普通权限:请求该权限的应用程序将始终被授予该权限,而无需用户批准或查看该权限。
删除所有代码。
我在白名单中看不到我的应用。
这是因为用户显然没有将您添加到白名单中。
从安全Angular 来看,请求REQUEST_IGNORE_BATTERY_OPTIMIZATIONS将赠款您使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONSIntent启动Activity的权限。请确保将您的应用程序包作为Uri包含在内:

  1. startActivity(new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, Uri.parse("package:"+getPackageName())));

字符串
用户将被带到一个屏幕,在该屏幕上,他们可以表示愿意在您的应用上暂停部分低睡模式效果。
如何将应用添加到白名单中而不被禁止?
如果您不想被禁止,请不要执行任何操作。在您的应用中添加一些东西,以ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGSIntent启动Activity。这会将用户引导到应用的整体列表,用户可以在其中切换哪些应用在白名单上,哪些不在白名单上。这不需要任何权限。
在清单中请求REQUEST_IGNORE_BATTERY_OPTIMIZATIONS的行为是what may get you banned

展开查看全部
gkl3eglg

gkl3eglg2#

注意使用Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS Intent进行Activity,这并不适用于所有手机,您将获得android.content.ActivityNotFoundException。特别是它不适用于运行Android 6的三星手机。我发现在这些手机上工作的唯一组合是在清单中声明REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,然后启动Intent Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS的Activity。即,Google不喜欢的组合。

hwamh0ep

hwamh0ep3#

有一个名为BatteryPermissionHelper的库可能会对你有所帮助。你可以在这里查看:https://github.com/WaseemSabir/BatteryPermissionHelper
这为不同的OEM提供了如何引导用户将您的应用列入白名单以忽略电池优化的实现。
它可以这样使用:

  1. dependencies {
  2. // ... other dependencies
  3. implementation 'com.waseemsabir:betterypermissionhelper:1.0.0'
  4. }

个字符

相关问题