Android Dolphin浏览器插件开发问题

时间:2013-10-17 14:54:44

标签: javascript android dolphin-browser

我正在为个人目的开发Dolphin浏览器的附加组件。该应用程序的功能是阅读网页中的文本框,并在我点击网页上的登录按钮时将其替换为网址。

我尝试使用以下代码在浏览器标签的Iwebview中运行java脚本。

package com.dolphin.rpplugin;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.annotation.Annotation;

import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.Menu;
import android.webkit.ConsoleMessage;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.Toast;
import com.dolphin.browser.addons.*;

@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends AddonService {
    private static String TAG = "MainActivity";
    final Handler myHandler = new Handler();
    String jscontent = "";
    IWebView webView ;

@Override
protected void onBrowserConnected(Browser browser) {
    Log.i(TAG, "Browser Started");
    try {
        browser.addonBarAction.setIcon(BitmapFactory.decodeResource(
                getResources(), R.drawable.ic_launcher));
        browser.addonBarAction.setTitle("RP Plugin");
        //Web view reading
        ITab tab = browser.tabs.getCurrent();
        if (null == tab) {
            return;
        }
        webView = tab.getWebView();
        if (null == webView) {
            return;
        }
        webView.getWebSettings().setJavaScriptEnabled(true);
        webView.getWebSettings().setSaveFormData(true);
        webView.getWebSettings().setSavePassword(true);
        //webView.

        browser.addonBarAction.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(Browser browser) {
                readURL(webView);
            }
        });
        browser.addonBarAction.show();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@JavascriptInterface
private void readURL(IWebView webView) {
    try {
        // Get current web page

        //browser.

        String url = webView.getUrl();
        if (url.contains("http://10.1.225.20:8080/Facebook")
                || url.contains("http://10.1.225.20:8080/Amazon")) {
            excecuteJavaScript();
            /*WebViews webview2 = browser.webViews;
            IWebView webview3 = browser.tabs.getCurrent().getWebView();
            webview3.loadUrl("javascript:(" + jscontent + ")()");*/
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void excecuteJavaScript() throws RemoteException {
    Log.i(TAG, "JavaScript Enabling");

    // reading the bootstrap java script file from asset folder.
    try {
        AssetManager am = getAssets();
        InputStream is = am.open("replace.js");
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        String line;
        while ((line = br.readLine()) != null) {
            jscontent += line;
        }
        is.close();
    } catch (Exception e) {
    }

    webView.loadUrl("javascript:(" + jscontent + ")()");
}

@Override
protected void onBrowserDisconnected(Browser arg0) {
    Toast.makeText(MainActivity.this, "Browser Connected",
            Toast.LENGTH_LONG).show();
}

}

这是我的replace.js文件

function replaceProfile() {
alert("Heai");
    var elemArray = document.getElementsByName("openid");
    alert("Hello! "+elemArray + " length:"+elemArray.length);
    if(elemArray.value == "john"){
        elemArray.value = "http://google.com/johnsmith";
    }   
}

这样我有几个问题: 1)java脚本无法按名称Openid读取元素和该文本框中的内容。 2)当我点击插件时,webview.loadUrl()第二次无效。

你能建议我如何实现吗?

0 个答案:

没有答案