آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

باز کردن لینک درون HTML از طریق webview

Aref  12 سال پیش  12 سال پیش
+1 0

تیتر سوال رو نمیدونستم باید چطور بنویسم :(

من از webview استفاده کردم تا فایل های html رو نشون بده ولی تو فایل html لینک به چندتا سایت گذاشتم که نمیتونه باز کنه چون تو پوشه asset نیستن ، چطور میشه کاری کنم وقتی رو لینک کلیک کردن از طریق مرورگر خود گوشیشون لینک اجرا بشه و کاری به برنامه من نداشته باشه ؟

اینم کدی که واسه اجرای html نوشتم

private WebView mWebview;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.app);
        mWebview = new WebView(this);
        mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
        final Activity activity = this;
        mWebview.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
            }
        });
        mWebview.loadUrl("file:///android_asset/winapp/index.html");
        setContentView(mWebview);
    }
0 0
دسترسی اینترنت دادی؟ (12 سال پیش)
0 0
چطور دسترسی بدم ؟ بلد نیستم ، کل کدی که نوشتم همینه (12 سال پیش)
+1 0
تو مانیفست : uses-permission android:name="android.permission.INTERNET" (12 سال پیش)
0 0
ممنون آقای حسین زاده (12 سال پیش)
 برای این سوال 6 پاسخ وجود دارد.
پاسخ به سوال 
Aref  12 سال پیش
0 0

الان لینک رو باز میکنه ولی داخل خود webview و دوباره واسه لینک دانلود و بقیه چیزایی که تو سایت هست هیچ عکس العملی نشون نمیده ، چطور میشه کدی بنویسم که لینک های داخل html از طریق مرورگر گوشی باز بشه و اکتیویتی هم بسته نشه ؟ الان وقتی لینک رو باز میکنه دکمه برگشت گوشی رو میزنم از اکتیویتی خارج میشه 

0 0
کسی نمیتونه راهنماییم کنه ؟ خیلی عجله دارم :( (12 سال پیش)
پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+5 0

برای کنترل رفتار وب ویو در مواجهه با آدرس جدید از WebViewClient استفاده میشه

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

WebView webView=(WebView)findViewById(R.id.webView);

webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}});

String html = "<html><body><a href='http://www.google.com'>Go !</a></body></html>";

webView.loadData(html, "text/html", null);
}
}

کد کامل یه اکتیویتی رو به عنوان مثال اضافه کردم

0 0
ببخشید من یکم زیادی آماتورم ، من یه کلاس به اسم MyWebViewClient ساختم و هم کدهای روش اول رو ریختم و هم کدهای روش دوم ولی بازم کار نکرد و تو خود webveiw نمایش داده میشه ، کد بالا جاییش رو باید تغییر بدم ؟ (12 سال پیش)
+1 0
کد ای یکی از دو روش رو باید بریزی + حتما به وب ویو معرفیش کنی (12 سال پیش)
0 0
خب منم همین گار رو کردم ولی بازم تو خود برنامه نمایشش میده (12 سال پیش)
0 0
url که تو کلاس نوشتم رو نمیخواد تغییر بدم ؟ (12 سال پیش)
0 0
شاید کلاً منظور منو بد متوجه شدین ، من میخام وقتی رو لینک کلیک شد مثلاً با گوگل کروم باز بشه ، آخه تو سایت های انگلیسی دیدم این کد رو واسه اینکه تو خود برنامه صفحه باز بشه نوشتن (12 سال پیش)
+1 0
برای هر دو این کار ها که میگی از همین کد و معرفی یه WebViewClient استفاده میشه - بهر حال مجدد کد رو ویرایش میکنم واضح تر باشه (12 سال پیش)
پاسخ به سوال 
Aref  12 سال پیش
0 0

کدی که نوشتین درست کار میکرد و مشکلی نداشت ولی چطور میشه یک فایل html که تو asset قرار داره رو باز کنه ؟

کد شما رو اینجوری تغییر دادم و برنامه کرش میکنه :

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        WebView webView = (WebView) findViewById(R.id.webView);
        WebSettings webSettings = webView.getSettings();
        webSettings.setBuiltInZoomControls(true);
        webView.getSettings().setJavaScriptEnabled(true); // enable javascript
        final Activity activity = this;

        webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            }
        });
        webView.loadUrl("file:///android_asset/win.html");
        setContentView(webView);
    }
}

 

0 0
خطا رو بزار (12 سال پیش)
پاسخ به سوال 
Aref  12 سال پیش
0 0

0 0
جاوا اسکریپت رو هم فعال کردم ، تو کد بالا هست (12 سال پیش)
+1 0
stackoverflow.com/questions/4333516/java-lang-classnotfoundexception-on-my-android-app-but-i-have-no-idea-why (12 سال پیش)
0 0
اسم پکیج من همین الان هم "." داره ولی بازم تغییر دادم فرقی نکرد شاید من درست متوجه نشدم باید چیکار کنم ، پروژه رو export کردم اگه میشه یه نگاه بندازین ببینین میشه خطا رو برطرف کرد لینک ( کل پروژه نیست فقط همین کد رو گذاشتم ) (12 سال پیش)
پاسخ به سوال 
Aref  12 سال پیش
0 0

پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+2 0

 public class mainactivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

WebView webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setBuiltInZoomControls(true);
webSettings.setJavaScriptEnabled(true); // enable javascript


webView.setWebViewClient(new WebViewClient() {

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(mainactivity.this, description, Toast.LENGTH_SHORT).show();
}


@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
});
webView.loadUrl("file:///android_asset/win.html");
//setContentView(webView);
}
}

و ایرادش - وقتی layout رو ست کردی یعنی وب ویویی که توی xml تعریف کردی میشه فرزند - مجدد آخر متد هم داری وب ویو رو فرزند قرار میدی - حاصل میشه ارور اینکه ویوی جاری (وب ویو) پدر دیگه ای داره - که البته با اروری که بالا تصویر گذاشته بودی متفاوت بود

0 0
آقای حسین زاده خیلی خیلی ممنون ، واقعاً خیلی کمک کردین و تو این 1-2 روز بهتون زحمت دادم (12 سال پیش)
0 0
خواهش میکنم (12 سال پیش)

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