سؤال

أحاول بدء خدمة إمكانية الوصول الخاصة بي على Android 4.0.4 ولكن غير قادر على البدء. إنه يعمل بشكل جيد في 2.3.3. ولكن لا حظ للإصدار المحدث. لقد جربت هذا الاقتراح.يتم تشغيل خدمة Accessibility Service ولكنها لا تتلقى إمكانية الوصول إلى Jellybeanها هو الكود الخاص بي.

تقوم NotificationService من الطبقة العامة بتوسيع AccessibilityService {

static final String TAG = "NotificationService";


private String getEventType(AccessibilityEvent event) {
    switch (event.getEventType()) {
        case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
            return "TYPE_NOTIFICATION_STATE_CHANGED";
        case AccessibilityEvent.TYPE_VIEW_CLICKED:
            return "TYPE_VIEW_CLICKED";
        case AccessibilityEvent.TYPE_VIEW_FOCUSED:
            return "TYPE_VIEW_FOCUSED";
        case AccessibilityEvent.TYPE_VIEW_LONG_CLICKED:
            return "TYPE_VIEW_LONG_CLICKED";
        case AccessibilityEvent.TYPE_VIEW_SELECTED:
            return "TYPE_VIEW_SELECTED";
        case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
            return "TYPE_WINDOW_STATE_CHANGED";
        case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:
            return "TYPE_VIEW_TEXT_CHANGED";
    }
    return "default";
}

private String getEventText(AccessibilityEvent event) {
    StringBuilder sb = new StringBuilder();
    for (CharSequence s : event.getText()) {
        sb.append(s);
    }
    return sb.toString();
}




  @Override
  public void onAccessibilityEvent(AccessibilityEvent event) {
    Toast.makeText(this, "Got event from " + event.getPackageName(), Toast.LENGTH_SHORT)
            .show();
    //Vibrator v = (Vibrator) getSystemService(VIBRATOR_SERVICE);
   // v.vibrate(new long[] { 0, 250, 250, 250, 250, 250, 250, 250, 250 }, -1);

    Log.v(TAG, String.format(
            " onAccessibilityEvent: [type] %s [class] %s [package] %s [time] %s [text] %s",
            getEventType(event), event.getClassName(), event.getPackageName(),
            event.getEventTime(), getEventText(event)));

  }

  @Override
  public void onInterrupt() {Log.v(TAG, "onInterrupt"); }

  @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        Log.v(TAG, "onServiceConnected");
        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.flags = AccessibilityServiceInfo.DEFAULT;
        info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
        info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
        setServiceInfo(info);
    }

}

ويظهر هو:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.watchservice"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

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


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.watchservice.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".NotificationService" android:enabled="true" 
            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/accessibilityservice" />

    </service>
    </application>

</manifest>

أقترحني ، أين سأخطئ؟

هل كانت مفيدة؟

المحلول

لقد أضفت علامة التعريف في بيان عن طريق الخطأ ، وهو أمر أساسي للإصدار الأعلى ثم ics.after إزالة علامة التعريف من تطبيق Android 4.0.4 ، فهو يعمل.

إذا كان لدي هذه العلامة في ملف البيان ، فهذا لا يعمل ، كما هو مقترح ، كان ذلك للإصدار الأحدث من Android.

<meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibilityservice" />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top