بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

دریافت سورس سایت لود شده در webview (حل شد)

مدیریت گفتگو
mtn67 11 سال پیش
آخرین تغییر: 10 سال پیش

سلام

آیا راهی وجود داره که بشه سورس سایت لود شده در webview رو دریافت کرد؟ خیلی گشتم راهی پیدا نکردم.

نظرات

mtn67 11 سال پیش
هیچ کس نظری، راه حلی، پیشنهادی نداره؟؟؟؟؟؟؟؟؟؟؟
Aref 11 سال پیش
دنبال webArchive باش
mtn67 11 سال پیش
از webArchiv نتونستم به جایی برسم راه دیگه ایی نیست؟مثلا از طریق جاوا اسکریپت نمیشه کاری کرد؟اصلا فکر نمیکردم گرفتن سورس webView اینقدر سخت باشه

پاسخ‌ها 4

کاشی زاده 11 سال پیش

با استفاده از جاوا اسکریپت میشه .

فعال کردن قابلیت لود جاوا اسکریپت

 webview.getSettings().setJavaScriptEnabled(true);

ابتدا نوشتن کلاسی به عنوان رابط اندروید و وب :

 classMyJavaScriptInterface{
public
void processHTML(String html){
// process the html as needed by the app

}
}

اضافه کردن رابط اندروید به وب ویو :

 webview.addJavascriptInterface(newMyJavaScriptInterface(),"HTMLOUT");

اضفه کردن لیسنر های وب ویو :

 webview.setWebViewClient(newWebViewClient(){
@Override
public void onPageFinished(WebView view,String url){
webview.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
});

و در نهایت هم لود صفحه وب :

 webview.loadUrl("http://lexandera.com/files/jsexamples/gethtml.html");

 

 

نظرات

mtn67 11 سال پیش
مرسی بابت راهنمایی.همه کارهایی ک گفتی انجام دادم کلاس رابط اندرویید و وب رو هم از یه جا دیگه پیدا کردم نوشتم فقط خروجی رو چجوری دخل یک String بریزم؟؟؟
کاشی زاده 11 سال پیش
متد processHTML خروجی html رو بهتون میده و میتونید هرکاری دوست دارید بکنید .
mtn67 11 سال پیش

نمیدونم چرا نمیتونم خروجی بگیرم.من اینجوری از متد processHTML  استفاده میکنم :

class MyJavaScriptInterface
        {

            public void processHTML(String html)
{ Toast.makeText(getBaseContext(), "" + html, Toast.LENGTH_LONG).show(); } } 

MyJavaScriptInterface run = new MyJavaScriptInterface(); run.processHTML(؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟);

ورودی processHTML  رو چی بنویسم؟ هرچی مینویسم عینا نشون داده میشه

نظرات

کاشی زاده 11 سال پیش
من کد رو بالا نوشتم ، شما نیازی نیست متد رو صدا بزنید خود وب ویو صدا میزینه
mtn67 11 سال پیش
بله درسته.یک دنیا تشکر.خیلی وقته دنبالش بودم.مرسی
sadra 11 سال پیش
دوست عزیز mtn67 این پروژه الان برای شما کار می کنه ؟ من تست کردم برام جواب نداد ، نمیدونم اشتباه کد نویسی کردم ، کد کامل برنامه توی کدوم قسمتشه ؟ ممنون
mtn67 11 سال پیش
بله به درستی کار کرد خیلی ساده است.کد کاملشو پایین مینویسم
mtn67 11 سال پیش

 package com.example.app.get_site_html_code;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;


public class GetSiteHtmlCodeActivity extends Activity {

    final Context   myApp = this;
    private WebView wb;


    class MyJavaScriptInterface
    {

        @SuppressWarnings("unused")
        public void showHTML(String html)
        {
            Toast.makeText(getBaseContext(), "" + html, Toast.LENGTH_LONG).show();
        }
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        wb = (WebView) findViewById(R.id.wb);
        wb.getSettings().setJavaScriptEnabled(true);
        wb.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
        wb.setWebViewClient(new WebViewClient());
        wb.loadUrl("http://google.com");
        startinga();

    }


    public void startinga() {
        wb.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageFinished(WebView view, String url) {
                wb.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

            }
        });
    }
}

در منیفست دسترسی به اینترنت یادت نره.در لایوت هم یک weview اضافه کن.

نظرات

علی 11 سال پیش
mtn67 این کد وقتی اطلاعات تغییر میکنه در دیتابیس آنلاین در وب ویو تغییر ایجاد نمیشه. باید چکار کرد که چک کنه اگه تغییری کرده بود دوباره لود بشه؟
one 10 سال پیش

چرا روی api15 کار نمیکنه؟

اون کلاسی که قراره با کد جاوا کار کنه و اطلاعات رو بگیره    اصلا اجرا نمیشه؟

نظرات

one 10 سال پیش
کسی نیست؟

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .