当前位置:   article > 正文

Android另辟蹊径开机自启动方案

Android另辟蹊径开机自启动方案

当大家看到这篇文章的时候,应该已经看到过很多关于开机自启动的文章,大概可以归纳为

开机广播方案、产商定制的自启动功能方案

如文章标题,这篇文章会提到一种新的方案:

无障碍开机自启动

说到这里,大家可能有点迷惑,简单讲就是当应用开启无障碍之后,开机就会自启动了。说到这文章其实也该结束了。但是介于无障碍服务属于一个特殊的系统服务,我觉得有必要再多讲一点关于其授权的方法,毕竟网络上已经有很多文章教我们从0到1开启一个无障碍服务,但很少讲到如何授权。

接下来,我会谈到无障碍服务的几种授权方案:(主要针对root或系统权限)

  • 1.普通应用跳转到系统的无障碍页面进行授权,此处不再bb
  • 2.root用户及系统权限应用使用shell命令的形式进行授权,直接贴代码一目了然吧。如果root用户仍然出现权限不够(一般不会出现这种情况吧),可以考虑看看我的另一篇app_process方案的文章。
    1. public class KeepAliveHelper {
    2. private static boolean isAccessibilitySettingsOn(String componentName, Context context) {
    3. if (TextUtils.isEmpty(componentName)) return false;
    4. int accessibilityEnable = 0;
    5. try {
    6. accessibilityEnable = Settings.Secure.getInt(context.getContentResolver(),
    7. Settings.Secure.ACCESSIBILITY_ENABLED, 0);
    8. } catch (Exception ignored) {}
    9. try {
    10. if (accessibilityEnable == 1) {
    11. TextUtils.SimpleStringSplitter mStringColonSplitter =
    12. new TextUtils.SimpleStringSplitter(':');
    13. String settingValue = Settings.Secure.getString(context.getContentResolver(),
    14. Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
    15. if (settingValue != null) {
    16. mStringColonSplitter.setString(settingValue);
    17. while (mStringColonSplitter.hasNext()) {
    18. String accessibilityService = mStringColonSplitter.next();
    19. if (accessibilityService.equalsIgnoreCase(componentName)) {
    20. return true;
    21. }
    22. }
    23. }
    24. }
    25. } catch (Exception e) {
    26. e.printStackTrace();
    27. }
    28. return false;
    29. }
    30. public static boolean openAccessibilityService(Context context, String componentName){
    31. if (TextUtils.isEmpty(componentName)) return false;
    32. if (isAccessibilitySettingsOn(componentName, context)){
    33. return true;
    34. }
    35. String enabledAccessibilityStr = Settings.Secure.getString(context.getContentResolver(),
    36. Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
    37. String text = ComponentName.unflattenFromString(componentName).flattenToShortString();
    38. if (TextUtils.isEmpty(text)) return false;
    39. if (!TextUtils.isEmpty(enabledAccessibilityStr)){
    40. text = enabledAccessibilityStr + ":" + text;
    41. }
    42. String cmd = String.format("settings put secure enabled_accessibility_services %s && settings put secure accessibility_enabled 1", text);
    43. return new ShellCommand().execute(cmd, true).result == 0;
    44. }
    45. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/327060
推荐阅读
相关标签
  

闽ICP备14008679号