zoukankan      html  css  js  c++  java
  • 使用AccessibilityService执行开机自启动

    res/xml/accessibility_service_config.xml

    <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:canRetrieveWindowContent="false"
    android:description="@string/xxxxxxx"
    android:notificationTimeout="100"
    android:packageNames="com.android.launcher" />

    <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />

    <service
    android:name=".BService"
    android:label="开机辅助"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >
    <intent-filter>
    <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>

    <meta-data
    android:name="android.accessibilityservice"
    android:resource="@xml/accessibility_service_config" />
    </service>

    <string name="xxxxxxx">开机辅助</string>

    //判断服务是否打开
    private boolean isAccessibilitySettingsOn(Context mContext) {
    int accessibilityEnabled = 0;
    final String service = getPackageName() + "/" + BService.class.getCanonicalName();
    try {
    accessibilityEnabled = Settings.Secure.getInt(mContext.getApplicationContext().getContentResolver(),
    android.provider.Settings.Secure.ACCESSIBILITY_ENABLED);
    Log.v(TAG, "accessibilityEnabled = " + accessibilityEnabled);
    } catch (Settings.SettingNotFoundException e) {
    Log.e(TAG, "Error finding setting, default accessibility to not found: " + e.getMessage());
    }
    TextUtils.SimpleStringSplitter mStringColonSplitter = new TextUtils.SimpleStringSplitter(':');

    if (accessibilityEnabled == 1) {
    Log.v(TAG, "***ACCESSIBILITY IS ENABLED*** -----------------");
    String settingValue = Settings.Secure.getString(mContext.getApplicationContext().getContentResolver(),
    Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
    if (settingValue != null) {
    mStringColonSplitter.setString(settingValue);
    while (mStringColonSplitter.hasNext()) {
    String accessibilityService = mStringColonSplitter.next();

    Log.v(TAG, "-------------- > accessibilityService :: " + accessibilityService + " " + service);
    if (accessibilityService.equalsIgnoreCase(service)) {
    Log.v(TAG, "We've found the correct setting - accessibility is switched on!");
    return true;
    }
    }
    }
    } else {
    Log.v(TAG, "***ACCESSIBILITY IS DISABLED***");
    }

    return false;
    }

    if (!isAccessibilitySettingsOn(this)) {
    Toast.makeText(this, "请打开开机辅助!", Toast.LENGTH_LONG).show();
    Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    }

  • 相关阅读:
    [题解]小B的询问-莫队水题
    [学习笔记]莫队学习笔记[未完待续]
    ffmpeg设置超时时间
    python signal
    pydantic库使用文档
    rtmp及直播流相关资料
    ffmpeg 将视频转换成m3u8视频
    nginx stop失败问题
    linux使用ssh远程登录服务器
    解决Fcitx输入法文字候选无前端问题
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/6001628.html
Copyright © 2011-2022 走看看