我在前台模式下有IntentService
任务,但在Android M+中,该任务在低电耗模式下停止。如果应用程序使用Intent将自己设置在白名单中,我会读取Google禁止。但是如果我使用权限并选中GRANT或DENIED,我会获得授予的结果,但什么也没有发生。我在白名单中看不到我的应用程序。我如何在白名单中添加应用程序而不被禁止?(我在AndroidManifest.xml
中添加了权限)
if(Build.VERSION.SDK_INT>=23){
int permissionCheck= ContextCompat
.checkSelfPermission(this, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
if(permissionCheck == PackageManager.PERMISSION_DENIED){
//Should we show an explanation
if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)){
//Show an explanation
final String message = "";
Snackbar.make(coordinatorLayoutView,message,Snackbar.LENGTH_LONG)
.setAction("GRANT", new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{ Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS }, PERMISSION_REQUEST_CODE);
}
})
.show();
}else{
//No explanation need,we can request the permission
ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS }, PERMISSION_REQUEST_CODE);
}
}
}
字符串
3条答案
按热度按时间3okqufwl1#
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
不是dangerous
权限。您不需要或不想要任何代码。引用REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
的文档:应用程序必须持有权限才能使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS。这是一种普通权限:请求该权限的应用程序将始终被授予该权限,而无需用户批准或查看该权限。
删除所有代码。
我在白名单中看不到我的应用。
这是因为用户显然没有将您添加到白名单中。
从安全Angular 来看,请求
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
将赠款您使用ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
Intent
启动Activity的权限。请确保将您的应用程序包作为Uri
包含在内:字符串
用户将被带到一个屏幕,在该屏幕上,他们可以表示愿意在您的应用上暂停部分低睡模式效果。
如何将应用添加到白名单中而不被禁止?
如果您不想被禁止,请不要执行任何操作。在您的应用中添加一些东西,以
ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
Intent
启动Activity。这会将用户引导到应用的整体列表,用户可以在其中切换哪些应用在白名单上,哪些不在白名单上。这不需要任何权限。在清单中请求
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
的行为是what may get you banned。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不喜欢的组合。
hwamh0ep3#
有一个名为BatteryPermissionHelper的库可能会对你有所帮助。你可以在这里查看:https://github.com/WaseemSabir/BatteryPermissionHelper。
这为不同的OEM提供了如何引导用户将您的应用列入白名单以忽略电池优化的实现。
它可以这样使用:
个字符