我有两个
Android应用程序(应用程序A,应用程序B),如下图所示.
我想通过单击第一个应用程序A中的按钮来调用应用程序B,当应用程序B启动时,文本框将包含我想从应用程序A传递的文本.
我想通过单击第一个应用程序A中的按钮来调用应用程序B,当应用程序B启动时,文本框将包含我想从应用程序A传递的文本.
**注意-
>我可以访问应用程序A,因此我可以修改应用程序A的代码.我无法访问应用程序B.
>我在Stackoverflow.com和其他网站上看过许多解释将数据传递给第二个应用程序的帖子,但我看到它只有在你有权修改这两个类的代码时才有可能.在我的情况下,我无法访问应用程序2,它只是一个安装在我的手机上的APK.
>我想像通过Selenium自动化网页一样实现,我们可以访问文本字段并在该文本字段中输入值.
>应用B仅用于示例目的.它可以是任何具有文本框的应用程序.
>实际上我希望在应用程序A的帮助下自动执行应用程序(应用程序B)的登录过程.应用程序A具有许多凭据,并且从应用程序A中选择凭证,它将启动应用程序B并输入凭证到登录申请B的屏幕.
**
希望我能够解释我的问题.如果需要更多输入,我可以解释一下.
解决方法
你有2个选择:
>应用程序B需要输入(通过意图).然后你可以启动应用程序B并通过意图传递值:
intent.putExtra("Key","Your data here");
您需要知道应用程序B使用哪个密钥,否则您无法执行此操作.
>应用程序B不期望输入.这并不容易,并且需要根本访问手机:
使用权限INJECT_EVENTS,可以键入文本或向任何窗口发送单击.你可以这样做:
Instrumentation m_Instrumentation = new Instrumentation(); m_Instrumentation.sendKeyDownUpSync( KeyEvent.KEYCODE_B ); //send key B
你可以找到更多关于这个主题的信息here.如果你需要帮助来编译你的应用程序,这2个链接将帮助你:How to compile Android Application with system permissions,Android INJECT_EVENTS permission