مرسی بابت راهنمایی.همه کارهایی ک گفتی انجام دادم کلاس رابط اندرویید و وب رو هم از یه جا دیگه پیدا کردم نوشتم فقط خروجی رو چجوری دخل یک String بریزم؟؟؟
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
دریافت سورس سایت لود شده در webview (حل شد)
مدیریت گفتگو
آخرین تغییر: 10 سال پیش
سلام
آیا راهی وجود داره که بشه سورس سایت لود شده در webview رو دریافت کرد؟ خیلی گشتم راهی پیدا نکردم.
پاسخها 4
با استفاده از جاوا اسکریپت میشه .
فعال کردن قابلیت لود جاوا اسکریپت
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");
نظرات
متد processHTML خروجی html رو بهتون میده و میتونید هرکاری دوست دارید بکنید .
نمیدونم چرا نمیتونم خروجی بگیرم.من اینجوری از متد processHTML استفاده میکنم :
class MyJavaScriptInterface
{
public void processHTML(String html)
{
Toast.makeText(getBaseContext(), "" + html, Toast.LENGTH_LONG).show();
}
}
MyJavaScriptInterface run = new MyJavaScriptInterface();
run.processHTML(؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟);
ورودی processHTML رو چی بنویسم؟ هرچی مینویسم عینا نشون داده میشه
نظرات
من کد رو بالا نوشتم ، شما نیازی نیست متد رو صدا بزنید خود وب ویو صدا میزینه
بله درسته.یک دنیا تشکر.خیلی وقته دنبالش بودم.مرسی
دوست عزیز mtn67 این پروژه الان برای شما کار می کنه ؟ من تست کردم برام جواب نداد ، نمیدونم اشتباه کد نویسی کردم ، کد کامل برنامه توی کدوم قسمتشه ؟ ممنون
بله به درستی کار کرد خیلی ساده است.کد کاملشو پایین مینویسم
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 اضافه کن.
نظرات
mtn67 این کد وقتی اطلاعات تغییر میکنه در دیتابیس آنلاین در وب ویو تغییر ایجاد نمیشه. باید چکار کرد که چک کنه اگه تغییری کرده بود دوباره لود بشه؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات