আমি কিভাবে আমার অ্যাপ্লিকেশন থেকে Android এর ওয়েব ব্রাউজারে একটি URL খুলতে পারি?




android-intent android-browser (20)

কিভাবে আমার অ্যাপ্লিকেশনের পরিবর্তে অন্তর্নির্মিত ওয়েব ব্রাউজারে কোড থেকে একটি URL খুলতে হয়?

আমি এটা চেষ্টা করেছি:

try {
    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(download_link));
    startActivity(myIntent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(this, "No application can handle this request."
        + " Please install a webbrowser",  Toast.LENGTH_LONG).show();
    e.printStackTrace();
}

কিন্তু আমি একটি ব্যতিক্রম পেয়েছিলাম:

No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com

সহজ উত্তর

আপনি অ্যান্ড্রয়েড ডেভেলপার থেকে আনুষ্ঠানিক নমুনা দেখতে পারেন।

/**
 * Open a web page of a specified URL
 *
 * @param url URL to open
 */
public void openWebPage(String url) {
    Uri webpage = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

কিভাবে এটা কাজ করে

Intent এর কন্সট্রাকটর একটি চেহারা আছে দয়া করে:

public Intent (String action, Uri uri)

আপনি 2nd প্যারামিটারে android.net.Uri দৃষ্টান্তটি পাস করতে পারেন এবং প্রদত্ত তথ্য url এর উপর ভিত্তি করে একটি নতুন অভিপ্রায় তৈরি করা হয়।

এবং তারপরে, একটি নতুন কার্যকলাপ শুরু করার জন্য স্টার্ট অ্যাক্টিভিটি startActivity(Intent intent) কেবল কল করুন, যা প্রদত্ত URL দিয়ে অভিপ্রায় দ্বারা বান্ডেল করা হয়।

চেক বিবৃতি if আমি প্রয়োজন?

হ্যাঁ। ডক্স বলেছেন:

যদি ডিভাইসটিতে কোনও অ্যাপ্লিকেশান নেই যা নিখুঁত অভিপ্রায় পেতে পারে তবে এটি আপনার প্রোগ্রামটি অ্যাক্টিভেটিটি () অ্যাক্সেস করে ক্রাশ করবে। অভিপ্রায়টি পাওয়ার জন্য একটি অ্যাপ্লিকেশন বিদ্যমান কিনা তা যাচাই করতে প্রথমে আপনার উদ্দেশ্য বস্তুর সমাধান সমাধানটি () করুন। ফলাফলটি যদি অ-নল হয় তবে অন্তত একটি অ্যাপ্লিকেশন রয়েছে যা অভিপ্রায়টি পরিচালনা করতে পারে এবং এটি অ্যাক্টিভিটি () অ্যাক্টিভিটি কল করতে নিরাপদ। ফলাফলটি নাল হলে, আপনি অভিপ্রায়টি ব্যবহার করবেন না এবং, যদি সম্ভব হয়, তবে আপনি এমন অভিরুচিটি নিষ্ক্রিয় করতে চান যা অভিপ্রায়কে উদ্ঘাটিত করে।

বোনাস

নিচের মত ইন্টেন্ট তৈরি করার সময় আপনি এক লাইনে লিখতে পারেন:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

এটি অর্জনের একটি সাধারণ উপায় পরবর্তী কোডের সাথে:

String url = "http://www..com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url)); 
startActivity(i); 

যে একটি ছোট কোড সংস্করণে পরিবর্তন করা যেতে পারে ...

Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www..com"));      
startActivity(intent); 

বা:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www..com")); 
startActivity(intent);

সবচেয়ে কম! :

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www..com")));

শুভ কোডিং!


2.3, আমি সঙ্গে ভাল ভাগ্য ছিল

final Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url));
activity.startActivity(intent);

পার্থক্য হচ্ছে "android.intent.action.VIEW" Intent.ACTION_VIEW পরিবর্তে Intent.ACTION_VIEW ব্যবহার করা হচ্ছে।


Webview আপনার applicaion মধ্যে ইউআরএল লোড করতে ব্যবহার করা যেতে পারে। ইউআরএল টেক্সট ভিউ ব্যবহারকারীর কাছ থেকে প্রদান করা যেতে পারে অথবা আপনি এটি হার্ডকোড করতে পারেন।

এছাড়াও AndroidManifest মধ্যে ইন্টারনেট অনুমতি ভুলবেন না।

String url="http://developer.android.com/index.html"

WebView wv=(WebView)findViewById(R.id.webView);
wv.setWebViewClient(new MyBrowser());
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setJavaScriptEnabled(true);
wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv.loadUrl(url);

private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}

আপনার চেষ্টা ব্লকের মধ্যে, নিচের কোডটি পেস্ট করুন, আপনার লিঙ্কের অবস্থান সনাক্ত করার জন্য Android ইন্টেন্ট সরাসরি URI (ইউনিফর্ম রিসোর্স আইডেন্টিফায়ার) ধনীর মধ্যে লিঙ্কটি ব্যবহার করে।

আপনি এটি চেষ্টা করতে পারেন:

Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(myIntent);

আপনি এই ভাবে যেতে পারেন

XML এ:

<?xml version="1.0" encoding="utf-8"?>
<WebView  
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

জাভা কোডে:

public class WebViewActivity extends Activity {

private WebView webView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://www.google.com");

 }

}

ম্যানিফেস্টে ইন্টারনেট অনুমতি যোগ করতে ভুলবেন না ...


আমি এই শ্রেষ্ঠ

openBrowser(context, "http://www.google.com")

গ্লোবাল বর্গ মধ্যে কোড নিচে রাখুন

    public static void openBrowser(Context context, String url) {

        if (!url.startsWith("http://") && !url.startsWith("https://"))
            url = "http://" + url;

        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        context.startActivity(browserIntent);
    }

এই এক OmegaIntentBuilder চেষ্টা করুন

OmegaIntentBuilder.from(context)
                .web("Your url here")
                .createIntentHandler()
                .failToast("You don't have app for open urls")
                .startActivity();

এই পদ্ধতিটি আপনাকে একটি নির্দিষ্ট ইনপুট থাকার পরিবর্তে যেকোনো স্ট্রিং ইনপুট করার অনুমতি দেয়। এটি কোডের কিছু লাইন সংরক্ষণ করে যদি বারবার ব্যবহৃত হয়, কারণ আপনাকে শুধুমাত্র পদ্ধতিতে কল করার জন্য তিনটি লাইন দরকার।

public Intent getWebIntent(String url) {
    //Make sure it is a valid URL before parsing the URL.
    if(!url.contains("http://") && !url.contains("https://")){
        //If it isn't, just add the HTTP protocol at the start of the URL.
        url = "http://" + url;
    }
    //create the intent
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)/*And parse the valid URL. It doesn't need to be changed at this point, it we don't create an instance for it*/);
    if (intent.resolveActivity(getPackageManager()) != null) {
        //Make sure there is an app to handle this intent
        return intent;
    }
    //If there is no app, return null.
    return null;
}

এই পদ্ধতি ব্যবহার করে এটি সর্বজনীনভাবে ব্যবহারযোগ্য করে তোলে। এটি একটি নির্দিষ্ট ক্রিয়াকলাপে রাখতে হবে না, যেমন আপনি এটি ব্যবহার করতে পারেন:

Intent i = getWebIntent("google.com");
if(i != null)
    startActivity();

অথবা আপনি যদি এটি কোনও ক্রিয়াকলাপের বাইরে শুরু করতে চান, তবে আপনি কেবল ক্রিয়াকলাপের সূচনাতে স্টার্ট অ্যাক্টিভিটি কল করুন:

Intent i = getWebIntent("google.com");
if(i != null)
    activityInstance.startActivity(i);

এই কোড ব্লক উভয় হিসাবে দেখা যায় একটি নিল চেক আছে। অভিপ্রায় হ্যান্ডেল করার জন্য কোন অ্যাপ্লিকেশন নেই যদি এটি নল ফেরৎ হিসাবে।

যদি কোনও প্রোটোকল সংজ্ঞায়িত না থাকে তবে এই পদ্ধতিটি HTTP তে ডিফল্ট থাকে, কারণ এমন কোনও ওয়েবসাইট নেই যার একটি SSL শংসাপত্র নেই (আপনি কোন HTTPS সংযোগের জন্য যা প্রয়োজন) এবং যদি আপনি HTTPS ব্যবহার করার চেষ্টা করেন এবং এটি সেখানে না থাকে তবে এটি কাজ বন্ধ করবে । যেকোনো ওয়েবসাইট এখনও HTTPS এ জোর করতে পারে, তাই সেই পক্ষগুলি আপনাকে HTTPS এ কোনও পথে নিয়ে যায়

এই পদ্ধতিটি পৃষ্ঠাটি প্রদর্শনের জন্য বাহ্যিক সংস্থানগুলি ব্যবহার করে, আপনার জন্য ইন্টারনেটের অনুমতি ঘোষণা করার প্রয়োজন নেই। ওয়েবপৃষ্ঠা প্রদর্শন করে এমন অ্যাপ্লিকেশনটি করতে হবে


একটি সংক্ষিপ্ত কোড সংস্করণ ...

 if (!strUrl.startsWith("http://") && !strUrl.startsWith("https://")){
     strUrl= "http://" + strUrl;
 }


 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl)));

এটা চেষ্টা কর:

Uri uri = Uri.parse("https://www.google.com");
startActivity(new Intent(Intent.ACTION_VIEW, uri));

অথবা আপনি যদি চান তবে আপনার ব্রাউজারে ওয়েব ব্রাউজার খোলা থাকে তবে এটি পছন্দ করুন:

WebView webView = (WebView) findViewById(R.id.webView1);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
webView.loadUrl(URL);

এবং যদি আপনি আপনার ব্রাউজারে জুম নিয়ন্ত্রণ ব্যবহার করতে চান তবে আপনি ব্যবহার করতে পারেন:

settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);

এর প্রতিক্রিয়া সঠিক। আমার ক্ষেত্রে আমি Xamarin ব্যবহার করছি, এবং সি # এবং Xamarin সঙ্গে ব্যবহার করার কোডটি হল:

var uri = Android.Net.Uri.Parse ("http://www.xamarin.com");
var intent = new Intent (Intent.ActionView, uri);
StartActivity (intent);

এই তথ্যটি থেকে নেওয়া হয়েছে: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/


ঠিক আছে, আমি প্রতিটি উত্তর চেক করেছি কিন্তু কোন অ্যাপ্লিকেশন ব্যবহারকারীর একই URL ব্যবহার করতে চাইছে?

আজ আমি এই ক্ষেত্রে পেয়েছি এবং উত্তর browserIntent.setPackage("browser_package_name");

উদাহরণস্বরূপ:

   Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
    browserIntent.setPackage("com.android.chrome"); // Whatever browser you are using
    startActivity(browserIntent);

ধন্যবাদ!


ঠিক যেমন সমাধানটি অন্যরা লিখেছেন (যেটি কাজটি ভাল), আমি একই জিনিসটি উত্তর দিতে চাই, কিন্তু একটি টিপ যা আমি মনে করি সর্বাধিক ব্যবহার করতে পছন্দ করে।

যদি আপনি অ্যাপ্লিকেশানটি চান তবে আপনি নতুন টাস্ক খুলতে শুরু করেন, একই স্ট্যাকে থাকার পরিবর্তে, নিজের স্বতঃস্ফূর্ত, আপনি এই কোডটি ব্যবহার করতে পারেন:

final Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

যদি আপনি এক্সএমএলটি দিয়ে এটি করতে চান তবে প্রোগ্রাম্যাটিক্যালভাবে আপনি আপনার পাঠ্য ভিউতে ব্যবহার করতে পারেন:

android:autoLink="web"
android:linksClickable="true"

android.webkit.URLUtil guessUrl(String) Api level 1 (অ্যান্ড্রয়েড 1.0) থেকে guessUrl(String) হয়েছে guessUrl(String) পুরোপুরি সূক্ষ্ম কাজ করছে (এমনকি file:// অথবা data:// সাথেও)। ব্যবহার করুন:

String url = URLUtil.guessUrl(link);

// url.com            ->  http://url.com/     (adds http://)
// http://url         ->  http://url.com/     (adds .com)
// https://url        ->  https://url.com/    (adds .com)
// url                ->  http://www.url.com/ (adds http://www. and .com)
// http://www.url.com ->  http://www.url.com/ 
// https://url.com    ->  https://url.com/
// file://dir/to/file ->  file://dir/to/file
// data://dataline    ->  data://dataline
// content://test     ->  content://test

ক্রিয়াকলাপ কল:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URLUtil.guessUrl(download_link)));

if (intent.resolveActivity(getPackageManager()) != null)
    startActivity(intent);

আরো তথ্যের জন্য সম্পূর্ণ guessUrl চেক করুন।


মৌলিক ভূমিকা:

https: // সেটি "কোড" তে ব্যবহার করছে যাতে কেউ তাদের মধ্যে পড়তে পারে না। এই আপনার তথ্য হ্যাকার থেকে নিরাপদ রাখে।

http: // কেবল ভাগ করার উদ্দেশ্যে ব্যবহার করা হচ্ছে, এটি সুরক্ষিত নয়।

আপনার সমস্যা সম্পর্কে:
XML ডিজাইনিং:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.sridhar.sharedpreferences.MainActivity">
   <LinearLayout
       android:orientation="horizontal"
       android:background="#228b22"
       android:layout_weight="1"
       android:layout_width="match_parent"
       android:layout_height="0dp">
      <Button
          android:id="@+id/normal_search"
          android:text="secure Search"
          android:onClick="secure"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="wrap_content" />
      <Button
          android:id="@+id/secure_search"
          android:text="Normal Search"
          android:onClick="normal"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="wrap_content" />
   </LinearLayout>

   <LinearLayout
       android:layout_weight="9"
       android:id="@+id/button_container"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:orientation="horizontal">

      <WebView
          android:id="@+id/webView1"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />

   </LinearLayout>
</LinearLayout>

কার্যকলাপ ডিজাইনিং:

public class MainActivity extends Activity {
    //securely open the browser
    public String Url_secure="https://www..com";
    //normal purpouse
    public String Url_normal="https://www..com";

    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView=(WebView)findViewById(R.id.webView1);

    }
    public void secure(View view){
        webView.setWebViewClient(new SecureSearch());
        webView.getSettings().setLoadsImagesAutomatically(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webView.loadUrl(Url_secure);
    }
    public void normal(View view){
        webView.setWebViewClient(new NormalSearch());
        webView.getSettings().setLoadsImagesAutomatically(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webView.loadUrl(Url_normal);

    }
    public class SecureSearch extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String Url_secure) {
            view.loadUrl(Url_secure);
            return true;
        }
    }
    public class NormalSearch extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String Url_normal) {
            view.loadUrl(Url_normal);
            return true;
        }
    }
}

অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল অনুমতি:

<uses-permission android:name="android.permission.INTERNET"/>

এটি প্রয়োগ করার সময় আপনি সমস্যার সম্মুখীন হন:

  1. ম্যানিফেস্ট অনুমতি পেয়ে
  2. অতিরিক্ত স্থান ইউআরএল এর মধ্যে
  3. আপনার ইউআরএল সঠিক বা না পরীক্ষা করুন

সহজ, উদ্দেশ্য মাধ্যমে ওয়েবসাইট দেখুন,

Intent viewIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://www.yoursite.in"));
startActivity(viewIntent);  

এই সহজ কোডটি Android অ্যাপ্লিকেশানে আপনার ওয়েবসাইটটি দেখুন।

ম্যানিফেস্ট ফাইলে ইন্টারনেট অনুমতি যোগ করুন

<uses-permission android:name="android.permission.INTERNET" /> 

Intent getWebPage = new Intent(Intent.ACTION_VIEW, Uri.parse(MyLink));          
startActivity(getWebPage);

String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);




android-browser