相关疑难解决方法(0)

通过Android WebView从JavaScript调用Java函数

我想在我的Android应用程序中对某些Java代码进行同步调用.

我正在使用此解决方案:https: //stackoverflow.com/a/3338656

我的Java代码:

final class MyWebChromeClient extends WebChromeClient {
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            Log.d("LogTag", message);
            result.confirm();
            return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的JavaScript代码:

<html>
<script>
function java_request(){
    alert('test');
}
</script>
<body>
<h2>Welcome</h2>
<div id="area"></div>
<form>
<input type="button" value="java_call" onclick="java_request()">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我点击java_call按钮时,按钮进入按下状态.我可以'test'在控制台日志中看到.一切都很正常,直到这里.

问题是,按钮永远不会恢复到正常状态.它保持在按下状态.也许JavaScript执行被破坏了什么?

为什么按钮永远不会恢复正常状态?

javascript android android-webview

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

evaluateJavascript如何工作?

我正在尝试在Android 4.4中使用新的evaluateJavascript方法,但我得到的所有内容都是null结果:

webView1.evaluateJavascript("return \"test\";", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String s) {
        Log.d("LogName", s); // Log is written, but s is always null
    }
});
Run Code Online (Sandbox Code Playgroud)

如何将结果返回此方法?

更新:更多信息:

  1. 我有INTERNET权限集
  2. 我有 setJavascriptEnabled(true);
  3. 试过撇号字符串:return 'test';,
  4. 试过JS对象: return { test: 'this' }
  5. console.log('test'); 正在执行罚款.
  6. 按照以下方式设置targetSdkVersion为19:如果您的应用使用WebView

设备: Nexus 7和Nexus 5(股票)

android android-webview android-4.4-kitkat

45
推荐指数
5
解决办法
8万
查看次数

Android:在webview中调试javascript的问题

我在WebView中运行了一些javascript,我希望收到有关JS中错误的控制台消息.按照http://developer.android.com/guide/webapps/debugging.html上的说明,我覆盖了方法

WebChromeClient.onConsoleMessage(String message, int lineNumber, String sourceID)

WebChromeClient.onConsoleMessage(ConsoleMessage cm),

将消息重定向到logcat.在Android 2.1中它运行良好,但在Android 2.2中没有调用此方法.

我做错了什么?

谢谢.

android android-webview

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

使用webView时是否可以将HTML表单中的数据导入android?

我在HTML中创建一个非常简单的表单,在Android中使用webview查看,使用文本框输入你的名字,当你点击按钮时,它会将它显示在一个段落中,并使用html和javascript进行制作.这是我的HTML代码:

<!DOCTYPE html>
<html>
<body>
<p> Write your name and win your favorite game console name and win it! The winners will be announced in 4 days.</p>
Type your name here: <input id="thebox" type="text" name="value" value=""><br>

    <button onclick="myFunction()">Try it</button>

    <p id="demo"></p>

    <script>
    function myFunction() {
        var x = document.getElementById("thebox").value;
        document.getElementById("demo").innerHTML = x;
    }
    </script>

    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

新编辑表格

<form name="albert" action="" method="POST">

 <label for="firstname"> First Name </label>
 <br /><br />

 <input type="text" name="firstname" id="firstname" />

 <input type="submit" name="sbumit" value="Submit" />


</form> …
Run Code Online (Sandbox Code Playgroud)

javascript android code-injection html-parsing webview

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

如何将返回值从javascript函数传递给android?

我想让我的Android应用程序调用一个用javascript编写的函数,并期望从中获得返回值.

我知道WebView.loadUrl是异步工作的,所以我现在要做的就是让javascript在完成后通知我的android应用程序,并通过使用javascriptinterface调用java函数传递返回值.

我想知道是否有更好的方法来做这个以及是否有人注意到javascript和android之间的任何消息丢失.

javascript android webview

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

Android复制并粘贴到任何应用程序中的任何文本字段

我正在开发一个商业用途的应用程序,后台服务通过蓝牙从RFID阅读器获取转发器号码(动物).

处理完收到的号码后,我想把它发送到剪贴板并将其粘贴到目前正在进行的任何应用程序的焦点文本字段中,在我的情况下是浏览器应用程序.

我已经在2013年找到了一个类似的问题,但现在还没有接受.该问题的所有答案都解释了如何使用ClipboardManager在开发的应用程序中复制和粘贴代码,但在评论中澄清时,这并不是问题的意思.

我能想象到的最简单的场景是在Android设备上模拟粘贴动作.我宁愿不需要安装第三方应用程序.

java android copy-paste

10
推荐指数
2
解决办法
2617
查看次数

webview与移动应用程序中的本机代码之间的通信

我必须开发一个电子商务移动应用程序.为了将产品展示到应用程序中,我必须使用指向移动网站的webview.与每个产品相关联的是"添加到购物篮"按钮.此按钮也是移动网站的一个元素.在移动应用程序的标签栏中(而不是在webview中),有一个篮子的图标,其中包含篮子的元素数量.webview如何知道用户已将一个或多个元素添加到购物篮并将此信息发送到可以更新购物篮图标的原生移动应用程序?

android webview native-code ios

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

从Javascript*可靠*返回值到Webview

有一种方法可以从webview调用javascript函数,然后让它调用Java中的方法来返回结果.就像在如何从android的webview中获取javascript的返回值一样

现在,javascript函数可能会失败(比如由于javascript文件中的拼写错误).在这种情况下,我想在Java中执行一些故障转移代码.有什么好办法呢?

我当前的代码如下所示:

在Java中:

    private boolean eventHandled = false;
    @Override
    public void onEvent() {
        eventHandled = false;
        webview.loadUrl("javascript:handleEvent()");

        // Wait for JS to handle the event.
        try {
            Thread.sleep(500);  // milliseconds
        } catch (InterruptedException e) {
            // log
        }   

        if (!eventHandled) {
            // run failover code here.
        }   
    }   
    public final MyActivity activity = this;
    public class EventManager {
        // This annotation is required in Jelly Bean and later:
        @JavascriptInterface
        public void setEventHandled() {
            eventHandled = true; …
Run Code Online (Sandbox Code Playgroud)

android webview android-webview

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