首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无障碍服务描述

无障碍服务描述
EN

Stack Overflow用户
提问于 2013-10-09 13:56:59
回答 1查看 4.4K关注 0票数 11

我编写了一个非常简单的accessibilityService,我正在尝试在设置/辅助功能/我的应用程序中显示对服务的描述。下面是我所有的代码,应该将描述设置为"Hello!“但是这些设置仍然显示“没有可用的描述”。

我的服务:

代码语言:javascript
复制
public class IdleService extends AccessibilityService{

    int interval = 100;
    int maxIdleTime = 20000;
    int idleTime = 0;
    Handler mHandler;
    String cProcess;

    @Override
    public void onServiceConnected(){

        mHandler = new Handler();

        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        // we are interested in all types of accessibility events
        info.describeContents();
        info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
        info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
        // we want to receive events in a certain interval
        info.notificationTimeout = interval;

        setServiceInfo(info);

        Log.e("IdleService", " idle service connected!");
        statusChecker.run();
    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent arg0) 
    {
        // TODO Auto-generated method stub
        Log.v("IdleService", "reseting idle time");
        idleTime = 0;
    }

    @Override
    public void onInterrupt() 
    {
        // TODO Auto-generated method stub
        Log.v("IdleService", "INTERUPTED");
    }

    public void setMaxIdleTimeInSeconds(int time)
    {

        maxIdleTime = time *1000;
    }


    Runnable statusChecker = new Runnable() 
    {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            ActivityManager am = (ActivityManager) getApplicationContext()
                    .getSystemService(Context.ACTIVITY_SERVICE);

            List<ActivityManager.RunningTaskInfo> processList = am
                    .getRunningTasks(5);

            cProcess = processList.get(0).baseActivity.getPackageName();

            Log.v("IdleService", "Current PackageName:"+cProcess);
            cProcess = processList.get(0).baseActivity.getClassName();

            Log.v("IdleService", "Current ClassName:"+cProcess);
            idleTime +=100;
            Log.v("IdleService", "TICK TOCK, user Idle for:"+idleTime);
            if(idleTime>=maxIdleTime)
            {
                Log.v("IdleService", "we timed out do to inactivity");
                //mHandler.postDelayed(statusChecker, interval);
                //stopSelf();
            }else{


            }
            mHandler.postDelayed(statusChecker, interval);
        }


    };
}

在我的清单中我有这个作为服务:

代码语言:javascript
复制
<service android:name="com.myPackage.IdleService"
                android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
                    <meta-data
                    android:name="android.accessibilityservice"
                    android:resource="@xml/accessibility_service_config" />
                    <intent-filter>
                        <action android:name="android.accessibilityservice.AccessibilityService" />
                    </intent-filter>

                </service>

,在我的res/xml中有一个accessibility_service_config.xml文件:

代码语言:javascript
复制
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/accessibility_service_description"

    android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"
/>

,最后在res/values/ I中有strings.xml,如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="accessibility_service_description">Hello!</string>
</resources>
EN

回答 1

Stack Overflow用户

发布于 2015-07-09 12:25:03

我遇到了同样的问题,并最终使它发挥作用。我知道服务本身包括权限,但是您也需要将BIND_ACCESSIBILITY_SERVICE权限添加到清单中。

代码语言:javascript
复制
<manifest ...>
    ...
    <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />
    ...
</manifest>

服务的<meta-data>必须命名为android.accessibilityservice,这是很好的。

最后,我不得不将apk推到我的设备上,然后重新启动它以进行更改。

注意:在清单中的<service>元素中添加description属性并不影响系统设置中显示的服务描述。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19274154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档