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);
    }

  • 相关阅读:
    一个日期类型接口参数的构造思路
    python接口测试:如何将A接口的返回值传递给B接口
    关于查询类接口的一些总结
    (六十八)c#Winform自定义控件-DEMO整理-HZHControls
    (六十七)c#Winform自定义控件-柱状图-HZHControls
    (六十六)c#Winform自定义控件-图标-HZHControls
    (六十五)c#Winform自定义控件-思维导图/组织架构图(工业)-HZHControls
    (六十四)c#Winform自定义控件-温度计(工业)-HZHControls
    (六十三)c#Winform自定义控件-箭头(工业)-HZHControls
    (六十二)c#Winform自定义控件-警灯(工业)-HZHControls
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/6001628.html
Copyright © 2011-2022 走看看