当前位置:   article > 正文

Shell 进程通过 ContentProvider 实现跨进程通信_android error while accessing provider

android error while accessing provider

背景

Android系统的UI测试框架有Uiautomator1.0和Uiautomator2.0,虽然Uiautomator1.0在Android11及以后的版本被放弃了,但是我们仍然可以通过反射FrameWork代码初的方式始化Uiautomator1.0服务,这样我们原有的测试用例就可以继续运行了。

今天分享一下Uiautomator1.0与server app跨进程通信的方案,我们一般情况下都使用socket进行通信,但是当server app没有运行时就很难及时处理,我们让server app实现ContentProvider来对外提供服务,即使server app没有运行,我们也能正常调用服务,系统会自动帮我们启动server app。

在应用(server app)内提供ContentProvider服务是很简单的,但是Uiautomator1.0和其他Shell进程是没有办法直接访问的,我们需要依赖反射技术进行调用。

实现

server app 创建ContentProvider服务

  1. package com.xxxx.xxxx.ticker.server;
  2. import android.content.ContentProvider;
  3. import android.content.ContentValues;
  4. import android.database.Cursor;
  5. import android.net.Uri;
  6. import android.os.Bundle;
  7. /**
  8. * @author walker
  9. * @date 2021/1/29.
  10. * @description 对外提供ContentProvider接口
  11. */
  12. public class CommonProvider_tme extends ContentProvider {
  13. @Override
  14. public boolean onCreate() {
  15. init();
  16. return false;
  17. }
  18. private void init() {
  19. }
  20. ;
  21. @Override
  22. public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
  23. return null;
  24. }
  25. @Override
  26. public String getType(Uri uri) {
  27. return null;
  28. }
  29. @Override
  30. public Uri insert(Uri uri, ContentValues values) {
  31. return null;
  32. }
  33. @Override
  34. public int delete(Uri uri, String selection, String[] selectionArgs) {
  35. return 0;
  36. }
  37. @Override
  38. public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
  39. return 0;
  40. }
  41. /**
  42. * @author walker
  43. * @Date 2021/3/11
  44. * @Description: 如果需要附加信息,用此字段存储
  45. */
  46. public static final String RES_DATA = "data";
  47. /**
  48. * @author walker
  49. * @Date 2021/3/11
  50. * @Description: int类型的处理码
  51. * 200 流程处理结束
  52. * 404 指定的方法名错误
  53. * 100 调用服务的认证信息错误
  54. * 500 业务错误
  55. * 501 处理异常
  56. */
  57. public static final String RES_CODE = "code";
  58. /**
  59. * @author walker
  60. * @Date 2021/3/11
  61. * @Description: 处理结果,提示处理的异常信息等
  62. */
  63. public static fin
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/293455
推荐阅读
相关标签
  

闽ICP备14008679号