想要将Web视图数据从Android保存到sqlite



我尝试使用javascriptInterface将数据从webview解析为文本视图,以便我可以将文本存储在sqlite中,但没有成功。我是安卓的新手,所以请指导我如何实现这一目标

尝试以下代码

final Context myctxt = this; //your activity or application context
    class MyJavaScriptInterface
    {
        @JavascriptInterface
        @SuppressWarnings("unused")
        public void processHTML(String html)
        {
            // process the html as needed by the app
            DBHelpher dbhelpher=new DBHelpher(myctxt);
            dbhelpher.insertHtmlString(html);
        }
    }
    final WebView browser = (WebView)findViewById(R.id.browser);
    /* JavaScript must be enabled if you want it to work, obviously */
    browser.getSettings().setJavaScriptEnabled(true);
    /* Register a new JavaScript interface called HTMLOUT */
    browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
    /* WebViewClient must be set BEFORE calling loadUrl! */
    browser.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url)
        {
            /* This call inject JavaScript into the page which just finished loading. */
            browser.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
        }
    });
    /* load a web page */
    browser.loadUrl("YOUR LINK");

    Create class for sqlite
    public class DBHelpher extends SQLiteOpenHelper 
    {
     Context context;
        public final String TABLE_SAMPLE="test";
          public final String COLUMN_ID="id";
        public final String COLUMN_HTMLSTRING="htmlstring";
        public final String CREATE_TABLE__SAMPLE_SQL="create table " + TABLE_SAMPLE
                + " (" + COLUMN_ID + " integer primary key autoincrement, "
                + COLUMN_HTMLSTRING + " text "
                + ");";

        public DBHelpher(Context context)
        {
            super(context, "DATABASENAME.db", null, 1);
            this.context=context;
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_TABLE__SAMPLE_SQL);

        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }

        public void insertHtmlString(String htmlString)
        {
            SQLiteDatabase database = this.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put(COLUMN_HTMLSTRING,htmlString);
             database.insert(TABLE_SAMPLE, null, values);

        }

    }

您将在processHTML方法中获得整个Html contnet。 并且它不会对网页发出另一个请求。

最新更新