অ্যান্ড্রয়েড ওয়েবভিউ লোডারলকে কল করার সময় ব্রাউজার চালু করে


473

আমি একটিতে Activityএকটি শিরোনাম এবং একটি ওয়েব ভিউ তৈরি করেছি LinearLayout। ইন onResume()পদ্ধতি এটা কল webView.loadUrl(url)। সমস্যাটি হ'ল ক্রিয়াকলাপটি প্রথমে বাকী স্ক্রিনটি ফাঁকা রেখে শিরোনামটি দেখায়, তারপরে URL টির জন্য পৃষ্ঠাটি দিয়ে ডিভাইস ব্রাউজারটি চালু করা হয়। আমি যা দেখতে চাই তা পৃষ্ঠাটি WebViewশিরোনামের নীচে প্রদর্শিত হচ্ছে । কি সমস্যা হতে পারে?

সম্পাদনা : ঠিক আছে, আরও কিছু অনুসন্ধান করেছেন এবং এটি খুঁজে পেয়েছেন:

ইউআরএল ক্লিক করা ডিফল্ট ব্রাউজার খুলবে

এটি এখানেWebView টিউটোরিয়াল নির্দেশ করে ।

কেবলমাত্র ওয়েব ক্লায়েন্টটি প্রয়োগ করুন এবং সেট করুন।


আমি এটি উল্লেখ করেছি কারণ আপনি আমার সমস্যার সমাধান করেছেন ... ধন্যবাদ
জেসি ব্ল্যাক

2
@ রে, এই প্রশ্নের উত্তর লেখার বিষয়ে বিবেচনা করুন, যদি আপনি কোনও সমাধান খুঁজে পেয়ে থাকেন এবং তা গ্রহণ করেন। এটি একই সমস্যাযুক্ত অন্যান্য ব্যক্তিদের সহায়তা করবে।
হিটডেডিট

1
আমার আরও নস্টিয়ার সমস্যা ছিল। দেখা যাচ্ছে, কোনও কাস্টম ওয়েবভিউক্লিয়েন্ট ব্যবহার না করা থাকলে ব্রাউজারের সাথে পুনর্নির্দেশও লোড হবে।
Jakob Weisblat


এটি এই সম্পর্কে এটিও বলেছে ... youtube.com/watch?v=4bIF5I11c8s
আথিরা রেড্ডি

উত্তর:


798

মৌডিকাস এবং হিটের পরামর্শের ভিত্তিতে আমার প্রশ্নের উত্তর দেওয়া।

ওয়েবভিউ টিউটোরিয়ালটি এখানে দেখুন । কেবল ওয়েব ক্লায়েন্ট বাস্তবায়ন করুন এবং লোডআরএল এর আগে সেট করুন । সবচেয়ে সহজ উপায়:

myWebView.setWebViewClient(new WebViewClient());

ওয়েব সামগ্রীর জন্য আরও উন্নত প্রক্রিয়াকরণের জন্য, ChromeClient বিবেচনা করুন।


3
প্রাথমিক পৃষ্ঠা খুললে ওয়েবভিউ ডিফল্ট ব্রাউজার চালু করতে এড়াতে।
ম্যাগনো সি

23
এই অবিশ্বাস্য দুর্দান্ত যাদুবিদ্যার টুকরোটির জন্য ধন্যবাদ! আপনার জন্য +1 ... মিনাস ওয়ান, অ্যান্ড্রয়েড ...
জোশ

দুর্দান্ত উত্তর। আমার সমস্যাও সমাধান করেছেন।
Omid1989

এটি কি কেবল প্রাথমিক লোডিংয়ের জন্য কাজ করে? আপনি যদি অ্যাপ্লিকেশন থেকে ব্রাউজারটি নেভিগেট করতে চান?
লজিকব্লোক

5
myWebView.webViewClient = WebViewClient()কোটলিনে!
টমাস প্রিচার্ড


52

এটি ব্যবহার করুন:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dedline);

    WebView myWebView = (WebView) findViewById(R.id.webView1);
    myWebView.setWebViewClient(new WebViewClient());
    myWebView.loadUrl("https://google.com");
}

25

আপনার ক্রিয়াকলাপটি এটি তৈরি করুন।

public class MainActivity extends Activity {
WebView browser;

@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // find the WebView by name in the main.xml of step 2
    browser=(WebView)findViewById(R.id.wvwMain);

    // Enable javascript
    browser.getSettings().setJavaScriptEnabled(true);  

    // Set WebView client
    browser.setWebChromeClient(new WebChromeClient());

    browser.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
                }
        });
     // Load the webpage
    browser.loadUrl("http://google.com/");
   }
}

1
setJavaScriptEnabled(true)আপনার অ্যাপ্লিকেশনটিতে এক্সএসএস দুর্বলতাগুলি প্রবর্তন করে। আপনার জাভাস্ক্রিপ্টের প্রয়োজন না থাকলে এটি ব্যবহার করবেন না
apex39

জাভাস্ক্রিপ্ট সক্ষম করার লাইনটি অত্যন্ত গুরুত্বপূর্ণ, অন্যথায় আপনি পেয়ে যাবেন You need to enable JavaScript to run this app.এবং এটি গুগল করা কেবলমাত্র দেশীয় প্রতিক্রিয়াযুক্ত সমস্যাগুলি প্রকাশ করবে এবং আপনি পাগল হয়ে যাবেন কারণ ব্রাউজার সেটিংসে জাভাস্ক্রিপ্ট ইতিমধ্যে সক্ষম করা আছে enabled
জর্দান এইচ

19

আমিও একই সমস্যার মুখোমুখি হয়েছি এবং ওয়েবভিউ সম্পর্কে অ্যান্ড্রয়েডের অফিসিয়াল ডকুমেন্টেশন সমাধানটি পেয়েছি

এখানে আমার onCreateView()পদ্ধতিটি এবং এখানে আমি url খোলার জন্য দুটি পদ্ধতি ব্যবহার করেছি

পদ্ধতি 1 ব্রাউজারে url খুলছে এবং

পদ্ধতি 2টি আপনার কাঙ্ক্ষিত ওয়েবভিউতে url খুলছে।
এবং আমি আমার অ্যাপ্লিকেশনটির জন্য পদ্ধতি 2 ব্যবহার করছি এবং এটি আমার কোড:

public class MainActivity extends Activity {
   private WebView myWebView;

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

      View rootView = inflater.inflate(R.layout.fragment_webpage_detail, container, false);

      // Show the dummy content as text in a TextView.
      if (mItem != null) {

         /* Method : 1
          This following line is working fine BUT when we click the menu item then it opens the URL in BROWSER not in WebView */
         //((WebView)   rootView.findViewById(R.id.detail_area)).loadUrl(mItem.url);

        // Method : 2
        myWebView = (WebView) rootView.findViewById(R.id.detail_area); // get your WebView form your xml file
        myWebView.setWebViewClient(new WebViewClient()); // set the WebViewClient
        myWebView.loadUrl(mItem.url); // Load your desired url
    }

    return rootView;
}                                                                                               }

6

সহজ উত্তর আপনি এই মত ব্যবহার করতে পারেন

public class MainActivity extends AppCompatActivity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         WebView webView = new WebView(this);
         setContentView(webView);
         webView.setWebViewClient(new WebViewClient());
         webView.loadUrl("http://www.google.com");
   }
}

6

এই কোডটি ব্যবহার করে দেখুন ...

private void startWebView(String url) {

    //Create new webview Client to show progress dialog
    //When opening a url or click on link

    webView.setWebViewClient(new WebViewClient() {      
        ProgressDialog progressDialog;

        //If you will not use this method url links are opeen in new brower not in webview
        public boolean shouldOverrideUrlLoading(WebView view, String url) {              
            view.loadUrl(url);
            return true;
        }

        //Show loader on url load
        public void onLoadResource (final WebView view, String url) {
            if (progressDialog == null) {
                // in standard case YourActivity.this
                progressDialog = new ProgressDialog(view.getContext());
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }
        }
        public void onPageFinished(WebView view, String url) {
            try{
            if (progressDialog.isShowing()) {
                progressDialog.dismiss();
                progressDialog = null;
            }
            }catch(Exception exception){
                exception.printStackTrace();
            }
        }

    }); 

     // Javascript inabled on webview  
    webView.getSettings().setJavaScriptEnabled(true); 

    // Other webview options
    /*
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setBuiltInZoomControls(true);
    */

    /*
     String summary = "<html><body>You scored <b>192</b> points.</body></html>";
     webview.loadData(summary, "text/html", null); 
     */

    //Load url in webview
    webView.loadUrl(url);
}

1

আপনি যদি খালি পৃষ্ঠা দেখতে পান তবে জাভাস্ক্রিপ্ট সক্ষম করুন।

webView.setWebViewClient(new WebViewClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl(url);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.