相关疑难解决方法(0)

Android在WebView中调用JavaScript函数

我试图将一些javascript函数调用在一个html页面中运行android webview.很简单,什么代码尝试下面的事情-从Android应用程序,调用一个javascript带有测试消息,它依次调用Java函数回,在Android应用程序,通过敬酒显示测试消息功能.

javascript功能如下:

function testEcho(message){
     window.JSInterface.doEchoTest(message);
}
Run Code Online (Sandbox Code Playgroud)

从WebView,我试着javascript通过以下方式调用,没有运气:

myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Run Code Online (Sandbox Code Playgroud)

我确实启用javascriptWebView

myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface"); 
Run Code Online (Sandbox Code Playgroud)

并且继承了Java班级

public class JSInterface{

private WebView mAppView;
public JSInterface  (WebView appView) {
        this.mAppView = appView;
    }

    public void doEchoTest(String echo){
        Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
        toast.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

我花了很多时间在谷歌上搜索我可能做错了什么.我发现的所有例子都使用这种方法.有没有人在这里看错了? …

javascript android webview

234
推荐指数
7
解决办法
26万
查看次数

如何以编程方式更改布局的可见性

有可能改变View的可见性,但是如何以编程方式更改XML中定义的布局的可见性?如何获得布局对象?

<LinearLayout
    android:id="@+id/contacts_type"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:visibility="gone">
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

layout android visibility

56
推荐指数
3
解决办法
15万
查看次数

如何在Android上执行JavaScript?

我有使用ScriptEngineManager,ScriptEngine类的代码,用于使用Java执行JavaScript代码.但它在Java SE中运行良好,并且在Android中不起作用 - SDK显示缺少类的错误.是否可以在Android中执行JS代码?谢谢.

javascript java android

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

在Android Webview中,我能修改网页的DOM吗?

假设我通过webview加载第三方URL.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webview = (WebView) findViewById(R.id.webview);
        webview.setWebViewClient(new HelloWebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setWebChromeClient(new MyWebChromeClient());
        webview.loadUrl("http://ebay.com");         
    }
Run Code Online (Sandbox Code Playgroud)

我可以在这个WebView中注入一些东西来替换我自己的ebay徽标吗?

javascript android templates webview

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

在WebView中注入Javascript桥

我想从Android的网页中提取一些内容.我知道有解析HTML的库,但我想也许我可以作弊.

这就是我在做什么..

  1. 使用应用程序上下文以编程方式创建WebView,因此不必在UI中显示.
  2. 加载网页
  3. 附加JS接口
  4. 注入一些Javascript以与主机应用程序进行交互

这是一些代码......

    public void getLatestVersion(){
        Log.e("Testing", "getLatestVersion called...");
        WebView webview = new WebView(context.getApplicationContext());
        webview.loadUrl("https://example.com");
        webview.addJavascriptInterface(new jsInterface(), "Droid");
        webview.loadUrl("javascript: window.onload=function(){ Droid.showToast('testing!'); }");
    }

    class jsInterface{
        @JavascriptInterface
        public void showToast(String message){
            Log.e("Testing", message);
            Toast.makeText(context, message, Toast.LENGTH_LONG).show();
        }
    }
Run Code Online (Sandbox Code Playgroud)

由于WebView在UI中不可见,因此很难分辨哪个部分正在破坏.我所知道的是调用了第一个调用的Log,但是JavascriptInterface中的Log和Toast从未显示过.

我正在努力做甚么可能吗?如果是这样,我做错了什么?如果没有,为什么不呢?

编辑

将视图保留在UI中进行测试,显然第二次调用loadUrl不起作用.无论我尝试注入什么Javascript,它都不起作用.

编辑2

忘记启用Javascript我感到愚蠢,但它仍然没有工作..我添加了以下行...

    WebSettings webSettings = webview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webview.loadUrl("javascript: alert('farts0');");

    webview.loadUrl("https://example.com");
    setContentView(webview);

    String js = "document.body.innerHTML = '<p>test<p>';";
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        webview.evaluateJavascript(js, null);
    }else{
        webview.loadUrl("javascript: "+js);
    }
Run Code Online (Sandbox Code Playgroud)

编辑3

感谢大家的建议,你一直很有帮助,但到目前为止它还没有工作,所以除非有人在下一个小时提供工作代码,否则Nainal将得到一半的赏金.如果是这样,我不确定我是否会被允许再给它一个赏金,因为问题仍然没有得到解决.

到目前为止,这是我的完整代码,考虑了此页面上的建议,并尝试了我不太了解的手册中的几个设置.

import android.graphics.Bitmap;
import android.os.Bundle; …
Run Code Online (Sandbox Code Playgroud)

javascript java android javascript-injection webview

8
推荐指数
2
解决办法
4087
查看次数

在 android 中使用 Javascript 桥接器

我只是想将我的 java 应用程序与 webview 上的内容进行交流。

详细地说,可能只是在单击按钮时显示祝酒词?

在谷歌上搜索并做了一些研究后,最终得到了以下代码。

PS:-我正在使用 Android Studio,是否需要编译任何外部库才能完成任务?或者是其他东西 ?

以下是我的 WebviewActivity 代码:-

public class WebviewActivity extends AppCompatActivity {

private static final String TAG = "Main";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_webview);
    //WebView Object
    WebView browser;
    browser=(WebView)findViewById(R.id.webView);
    //Enable Javascript
    browser.getSettings().setJavaScriptEnabled(true);
    //Inject WebAppInterface methods into Web page by having Interface 'Android'
    browser.addJavascriptInterface(new WebAppInterface(this), "Android");
    browser.loadUrl("http://www.somewebsite.com/app/form.html");
}
//Class to be injected in Web page
public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */ …
Run Code Online (Sandbox Code Playgroud)

javascript android

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

有什么方法可以访问 Android 的 WebView 中的 DOM 结构吗?

有什么方法可以访问 Android 的 WebView 中的 DOM 结构吗?我需要它来检查页面上是否存在某个 DOM 对象,然后触发一些事件。

谢谢!

android dom android-webview

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