怎么通过辅助功能传值

时间:2022-10-27 18:48:13
怎么通过辅助功能,将填写在自己app中的文本框的值,点击确认按钮后传到另一个app中的文本框中。求大神指点一下! 怎么通过辅助功能传值

14 个解决方案

#1


那你为什么不把你这个数据保存到数据库 在另外一个app里面获取呢

#2


或者你用mqtt  通过publish和sub方法  当然这个也需要安装启用mqtt服务才行

#3


引用 1 楼 usecf 的回复:
那你为什么不把你这个数据保存到数据库 在另外一个app里面获取呢
这个方法不太适用我这种情况啊

#4


引用 2 楼 usecf 的回复:
或者你用mqtt  通过publish和sub方法  当然这个也需要安装启用mqtt服务才行
没有像intent那种方法吗

#5


intent一般都是一个app里面 不同的activity之间跳转用的

#6


引用 5 楼 usecf 的回复:
intent一般都是一个app里面 不同的activity之间跳转用的
那不同app之间有类似的方法吗,我要在辅助功能里实现

#7


没这样做过  你研究下  intent底层也是socket通信的  进程间通信一般用的是ibinder技术

#8


引用 7 楼 usecf 的回复:
没这样做过  你研究下  intent底层也是socket通信的  进程间通信一般用的是ibinder技术
好的,谢谢

#9


兄弟 看下这个  http://blog.csdn.net/lvlelygirl/article/details/49182365

#10


引用 9 楼 usecf 的回复:
兄弟 看下这个  http://blog.csdn.net/lvlelygirl/article/details/49182365
好的,我看看。谢谢!

#11


找到控件直接设置

Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "android");
node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);

另外也可以用粘贴的方式实现

Bundle arguments = new Bundle();
arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
                    AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD);
arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
                    true);
node.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
                    arguments);
ClipData clip = ClipData.newPlainText("label", "android");
clipboard.setPrimaryClip(clip);
node.performAction(AccessibilityNodeInfo.ACTION_PASTE);

#12


引用 11 楼 u013894546 的回复:
找到控件直接设置

Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "android");
node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);

另外也可以用粘贴的方式实现

Bundle arguments = new Bundle();
arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
                    AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD);
arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
                    true);
node.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
                    arguments);
ClipData clip = ClipData.newPlainText("label", "android");
clipboard.setPrimaryClip(clip);
node.performAction(AccessibilityNodeInfo.ACTION_PASTE);
能不能再详细点。。对安卓不太熟

#13


先在你的辅助服务里面过滤掉包名和事件类型,然后根据id或者其他标志找到你要的输入框控件,然后通过找到的控件执行 performAction 就行了,辅助服务抢红包之类的源码很多,原理都相识的

#14


引用 13 楼 u013894546 的回复:
先在你的辅助服务里面过滤掉包名和事件类型,然后根据id或者其他标志找到你要的输入框控件,然后通过找到的控件执行 performAction 就行了,辅助服务抢红包之类的源码很多,原理都相识的
还是不太会啊。我想我这个应该是要在按确认按钮时将文本框里的内容提交或者保存吧,然后跳转到第三方app的页面之后再传过去。麻烦能指导下吗

#1


那你为什么不把你这个数据保存到数据库 在另外一个app里面获取呢

#2


或者你用mqtt  通过publish和sub方法  当然这个也需要安装启用mqtt服务才行

#3


引用 1 楼 usecf 的回复:
那你为什么不把你这个数据保存到数据库 在另外一个app里面获取呢
这个方法不太适用我这种情况啊

#4


引用 2 楼 usecf 的回复:
或者你用mqtt  通过publish和sub方法  当然这个也需要安装启用mqtt服务才行
没有像intent那种方法吗

#5


intent一般都是一个app里面 不同的activity之间跳转用的

#6


引用 5 楼 usecf 的回复:
intent一般都是一个app里面 不同的activity之间跳转用的
那不同app之间有类似的方法吗,我要在辅助功能里实现

#7


没这样做过  你研究下  intent底层也是socket通信的  进程间通信一般用的是ibinder技术

#8


引用 7 楼 usecf 的回复:
没这样做过  你研究下  intent底层也是socket通信的  进程间通信一般用的是ibinder技术
好的,谢谢

#9


兄弟 看下这个  http://blog.csdn.net/lvlelygirl/article/details/49182365

#10


引用 9 楼 usecf 的回复:
兄弟 看下这个  http://blog.csdn.net/lvlelygirl/article/details/49182365
好的,我看看。谢谢!

#11


找到控件直接设置

Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "android");
node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);

另外也可以用粘贴的方式实现

Bundle arguments = new Bundle();
arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
                    AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD);
arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
                    true);
node.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
                    arguments);
ClipData clip = ClipData.newPlainText("label", "android");
clipboard.setPrimaryClip(clip);
node.performAction(AccessibilityNodeInfo.ACTION_PASTE);

#12


引用 11 楼 u013894546 的回复:
找到控件直接设置

Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "android");
node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);

另外也可以用粘贴的方式实现

Bundle arguments = new Bundle();
arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
                    AccessibilityNodeInfo.MOVEMENT_GRANULARITY_WORD);
arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
                    true);
node.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
                    arguments);
ClipData clip = ClipData.newPlainText("label", "android");
clipboard.setPrimaryClip(clip);
node.performAction(AccessibilityNodeInfo.ACTION_PASTE);
能不能再详细点。。对安卓不太熟

#13


先在你的辅助服务里面过滤掉包名和事件类型,然后根据id或者其他标志找到你要的输入框控件,然后通过找到的控件执行 performAction 就行了,辅助服务抢红包之类的源码很多,原理都相识的

#14


引用 13 楼 u013894546 的回复:
先在你的辅助服务里面过滤掉包名和事件类型,然后根据id或者其他标志找到你要的输入框控件,然后通过找到的控件执行 performAction 就行了,辅助服务抢红包之类的源码很多,原理都相识的
还是不太会啊。我想我这个应该是要在按确认按钮时将文本框里的内容提交或者保存吧,然后跳转到第三方app的页面之后再传过去。麻烦能指导下吗