小编Uma*_*hur的帖子

如何使用Android中的辅助功能服务访问WebView元素的AccessibilityNodeInfo的html内容?

我正在尝试访问另一个应用程序的文本内容,该应用程序可能是使用非本机(基于js + html)的框架构建的.

因此,我想我将尝试从对应于WebView元素的辅助功能节点访问数据.但是,我无法使用常用方法获取textual/html数据,因为像getText()这样的方法只有在它是本机android元素(如TextView,Button等)时才能工作.

public class MyAccessibilityService extends AccessibilityService {

@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
    AccessibilityNodeInfo accessibilityNodeInfo = accessibilityEvent.getSource();
    if (accessibilityNodeInfo == null) {
        return;
    }
    int childCount = accessibilityNodeInfo.getChildCount();
    for (int i = 0; i < childCount; i++) {
        AccessibilityNodeInfo accessibilityNodeInfoChild = accessibilityNodeInfo.getChild(i);
        myRecursiveFunc(accessibilityNodeInfoChild);
    }
}

@Override
public void onInterrupt() {

}


private void myRecursiveFunc(AccessibilityNodeInfo accessibilityNodeInfoChild) {
    if (accessibilityNodeInfoChild.getChildCount() > 0) {
        for (int j = 0; j < accessibilityNodeInfoChild.getChildCount(); j++) {
            AccessibilityNodeInfo child = accessibilityNodeInfoChild.getChild(j);
            if (child …
Run Code Online (Sandbox Code Playgroud)

android accessibility webview

15
推荐指数
1
解决办法
1985
查看次数

读取输入流时出错:软件导致连接中止'在java服务器中

我基本上试图在Android设备上托管服务器.客户端设备通过TCP连接到服务器并发送请求.服务器执行客户端请求的操作,然后将数据写回套接字.连接未被服务器终止,并且将通过套接字连续读取请求并回复.

注意:每个请求消息的前4个字节包含实际消息/请求的长度.

parseXmlInputAndExecuteCmd函数根据输入XML字符串的内容执行各种异步操作.这最终导致'allowResponse'变量的布尔值更改为true,并生成某个响应,该响应存储在名为'response'的String类型的变量中.一旦布尔值'allowResponse'变为true,线程就会恢复执行并将响应写回套接字的OutputStream

其中一些异步操作包括连接和断开与公司VPN的连接.这可能是错误的原因吗?

使用的一些类级变量是:

private volatile boolean allowResponse = false;
private String response;
Run Code Online (Sandbox Code Playgroud)

服务器代码:

    private void startServer() {
    try {
        ServerSocket serverSocket = new ServerSocket(8080);
        while (true) {
            Socket connectionSocket = serverSocket.accept();
            BufferedInputStream bufInpStream = new BufferedInputStream(connectionSocket.getInputStream());
            BufferedOutputStream bufOutStream = new BufferedOutputStream(connectionSocket.getOutputStream());
            ByteArrayOutputStream contentLengthBaos = new ByteArrayOutputStream();
            int c;
            int count = 0;
            while ((c = bufInpStream.read()) != -1) {
                contentLengthBaos.write(c);
                count++;
                if (count == 4) {
                    int contLen = getMessageLength(contentLengthBaos);
                    String content = getMessageContent(bufInpStream, contLen);
                    parseXmlInputAndExecuteCmd(content);
                    count = …
Run Code Online (Sandbox Code Playgroud)

java sockets android inputstream serversocket

14
推荐指数
1
解决办法
802
查看次数

如何防止Picasso在RecyclerView中重新加载图片?

我是使用RecyclerView和Picasso的新手.基本上,我要做的是 - 将推文列表传递给适配器.在OnBind()方法中,我使用Picasso将图像加载到每张卡上(如果存在).当我向上和向下滚动时,之前加载图像的卡片会闪烁并重新加载图像.文字没有闪烁.闪烁仅在图像的情况下发生.

我尝试在recyclerview对象上使用setItemViewCacheSize(int size).此功能缓存指定数量的项目,并为我提供了我正在寻找的流畅的用户体验.但我注意到它导致了"outOfMemory"错误.

我错过了RecyclerView或Picasso文档中的内容吗?

TweetsAdapter.java

package com.umangmathur.mynewtwitterclone;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import com.twitter.sdk.android.core.models.MediaEntity;
import com.twitter.sdk.android.core.models.Tweet;
import java.util.List;

public class TweetsAdapter extends RecyclerView.Adapter<TweetsAdapter.TweetHolder> {

    private List<Tweet> tweetList;

    public TweetsAdapter(List<Tweet> tweetList) {
        this.tweetList = tweetList;
    }

    @Override
    public TweetHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.tweet_layout, parent, false);
        return new TweetHolder(view);
    }

    @Override
    public void onBindViewHolder(TweetHolder holder, int position) { …
Run Code Online (Sandbox Code Playgroud)

android listview picasso android-recyclerview

7
推荐指数
0
解决办法
1673
查看次数

无法让华为Mapkit显示地图(使用官方Codelab源代码)

我尝试按照官方Codelab中的说明进行操作, 这是相应源代码的链接: https: //github.com/huaweicodelabs/MapKit

我做了什么:

  • 修改了包名称(AppGallery Connect 门户不允许应用程序的包名称已被其他人为其应用程序声明)
  • 创建了用于签名的密钥库文件(使用“构建”->“生成签名 APK”流程来创建它)
  • 将部分内的属性更新signingConfigs{release{...}}为:
storeFile file("/Users/myuser/mydir/mykeystorexyz") // no .jks extension as it's unimportant
storePassword "mypass123"
keyAlias "mykeystorexyz" //I had kept the name and alias of the file to be same
keyPassword "mypass123"
v2SigningEnabled true
Run Code Online (Sandbox Code Playgroud)
  • 使用新的包名称在Huawei Appgallery Connect上创建了一个项目和应用程序。还从用户界面启用了 Mapkit API。
  • 下载到项目目录agconnect-services.jsonapp
  • 复制里面的长API密钥agconnect-services.json并将其作为参数传递给MapsInitializer.setApiKey()inside MainActivity.java
  • 使用keytool -list -v -keystore /Users/myuser/mydir/mykeystorexyz命令获取密钥库信息并复制SHA256指纹。将此指纹粘贴到“AppGallery Connect”门户的应用程序信息部分。
  • 然后,我在安装了最新版本的 HMS Core 的 Pixel 5A(Android 12)设备上安装并运行了调试 APK(我尝试了6.6.0.331APKMirror 中的版本)。地图没有显示,我可以在 Logcat …

android huawei-mobile-services huawei-developers huawei-map-kit

6
推荐指数
1
解决办法
485
查看次数

Android中的MotionEvent.ACTION_DOWN过于敏感.即使屏幕被触摸片刻,也会收到此事件

我有一个布局(表格布局).每当用户执行"向下"手势时,需要调用特定功能.然而,ontouchlistener立即捕获事件而不是等到用户执行适当的"下拉"手势.

我的代码是:

homePageTableLayout.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View view, MotionEvent event) {
                if ((event.getAction() == MotionEvent.ACTION_DOWN)) {
                    startSyncData();
                }
                return true;
            }
        });
Run Code Online (Sandbox Code Playgroud)

目前,正在发生的是立即调用startSyncData()函数.最终结果应该与Android常用的"pulltorefresh"库类似,但在这个用例中,我不必更新视图.我只需要将一些数据发布到服务器上.我不能使用"pulltorefresh"库,因为它不支持"拉"tablelayout.我尝试将tablelayout放在scrollview中,但这只会破坏UI.

android gesture ontouchlistener

4
推荐指数
2
解决办法
1万
查看次数