【问题标题】:How to send data back from Activity to AccessibilityService?如何将数据从 Activity 发送回 AccessibilityService?
【发布时间】:2016-11-26 12:18:44
【问题描述】:

我有一个扩展 AccessibilityService 的类,当有某个事件时启动一个活动。

问题是当活动结束时,它应该将数据发送回“AccessibilityService”。有没有人知道如何做到这一点?

例子:

public class MyAccessibilityService extends AccessibilityService {

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {

        if (event.getEventType()==AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED){
                Intent intent=new Intent(getApplicationContext(),DialogActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                startActivity(intent);
                // String resul=set result When Activity is closed
        }
    }

提前致谢!

【问题讨论】:

    标签: android android-intent accessibilityservice


    【解决方案1】:

    AccesibilityService 是从 Service 类继承的类。所以我们可以参考这个问题: How to have Android Service communicate with Activity

    解决问题的最简单方法:

    1) 在 Activity 的 onDestroy() 方法中调用 startService():

    @Override
        protected void onDestroy() {
            super.onDestroy();
            Intent intent = new Intent(getApplicationContext(), MyAccessibilityService.class);
            intent.putExtra("data","yourData");
            startService(intent);
        }
    

    2) 覆盖您的 MyAccessibilityService 的 onStartCommand() 方法:

     @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            super.onStartCommand(intent, flags, startId);
            String data="";
            if(intent.getExtras().containsKey("data"))
                data = intent.getStringExtra("data");
            return START_STICKY;
        }
    

    【讨论】:

    • 这是最简单的方法。确保您发送的数据是可解释的。另一种选择是通过活页夹
    • 如本文stackoverflow.com/questions/9313472/… 中所述,服务会自动启动。那么,我们如何将数据传递给无障碍服务@negative_zero?
    【解决方案2】:

    1)在任何事件中从您的无障碍服务调用 startActivity(intent)。

        String msg = "your message";
        Intent intent = new Intent(serviceContext, activityClassName.class);
        intent.putExtra("message",msg);
        startActivity(intent);
    

    2)现在在您的活动 onCreate(Bundle bundle) 方法中,您可以获得意图。

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Intent intent = getIntent();
            String msg = intent.getStringExtra("message");
            Log.e(LOG_TAG,"Message From Service - "+msg); //Message From Service - your message
        }
    

    使用 Intent,您可以将数据从 Service 传递到 Activity。

    【讨论】:

    • 问题是完全相反。
    猜你喜欢
    • 2013-09-27
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    相关资源
    最近更新 更多