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


1342

আমার অ্যাপ্লিকেশনটির চেয়ে বিল্ট-ইন ওয়েব ব্রাউজারে কোড থেকে কীভাবে একটি 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

6
আমি মনে করি এটি এর কারণ: অ্যান্ড্রয়েড
ডেভেলপার্স.ব্লগস্পট.com

1
কেন এটি কিছু ডিভাইসে কাজ করছে না? এমনকি যদি কোনও ওয়েব ব্রাউজার থাকে তবে এটি অ্যাক্টিভিটিনটফাউন্ডএক্সসেপশনে যায়।

আমি @ মানু হিসাবে একই সমস্যাটি দেখতে পাচ্ছি। একটি নেক্সাস 6 এ বেসিক ইনস্টলটির ক্রোম রয়েছে, তবে লিঙ্কগুলি ব্যতিক্রম ঘটায়।
ব্রিল প্যাপিন

উত্তর:


2452

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

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

এটা আমার জন্য ভাল কাজ করে।

অনুপস্থিত "http: //" হিসাবে আমি ঠিক এরকম কিছু করব:

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

আমি সম্ভবত আপনার সম্পাদনা পাঠটিকে প্রাক-জনবসতি করতে চাই যে ব্যবহারকারী "http: //" দিয়ে একটি URL টাইপ করছেন।


2
আপনার কোড এবং এমবার্ডগুলি এক নয় তবে ব্যতীত আমি যা পোস্ট করেছি তার জন্য যা বলতে পারি from আপনার ইউআরএলটির http://স্কিম রয়েছে কিনা তা নিশ্চিত করুন - প্রদর্শিত ব্যতিক্রমগুলি থেকে বোঝা যায় যে আপনার URL টি স্কিমের অভাব বোধ করছে।
কমন্সওয়্যার

5
হ্যাঁ ! এটি মিস করল http: //! ইউআরএল ব্যবহারকারীর দ্বারা প্রবেশ করা হয়েছে, স্বয়ংক্রিয়ভাবে বিন্যাস করার কোনও উপায় আছে?
অরুথা

4
ইউআরএলটিইল "ইউআরএল" স্ট্রিংস ব্যবহারকারীর প্রবেশের উপর চেক করার এক দুর্দান্ত উপায়
ড্যান

90
if (!url.startsWith("http://") && !url.startsWith("https://"))একটি সাধারণ ত্রুটি যা আপনাকে ফাইল: // এর মতো ইউআরএল বাড়ে এবং কিছু ভাল ব্যবহারের কেসগুলি ভেঙে দিতে পারে। ইউআরআই ক্লাসের সাথে ইউরি পার্স করার চেষ্টা করুন এবং সেখানে স্কিমা আছে কিনা তা পরীক্ষা করে দেখুন। যদি না হয় তবে "http: //";) যোগ করুন
tuxSlayer

22
আপনার সাথে নাল চেক করা দরকার resolveCheck। দেখুন সরকারী দস্তাবেজ : সাবধান: ডিভাইস যা অন্তর্নিহিত অভিপ্রায় গ্রহণ করতে পারে কোন অ্যাপস থাকে তাহলে আপনার অ্যাপ যখন এটি startActivity () কল বিপর্যস্ত হবে। প্রথমে যাচাই করার জন্য কোনও অ্যাপ্লিকেশন উপস্থিত রয়েছে তা সনাক্ত করার জন্য, আপনার ইন্টেন্ট অবজেক্টে রেজলিউশনসিটিভিটি () কল করুন।
কেনজু

90

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

String url = "http://www.stackoverflow.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.stackoverflow.com"));      
startActivity(intent); 

বা:

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

সবচেয়ে কম! :

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

শুভ কোডিং!


57

সহজ উত্তর

আপনি অ্যান্ড্রয়েড বিকাশকারী থেকে সরকারী নমুনা দেখতে পারেন ।

/**
 * 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)

আপনি android.net.Uri২ য় প্যারামিটারে উদাহরণটি পাস করতে পারেন এবং প্রদত্ত ডেটা url এর উপর ভিত্তি করে একটি নতুন ইনটেন্ট তৈরি করা হয়েছে।

এবং তারপরে, কেবলমাত্র startActivity(Intent intent)একটি নতুন ক্রিয়াকলাপ শুরু করার জন্য কল করুন যা প্রদত্ত ইউআরএলটি সহ ইনটেন্টের সাথে বান্ডিল রয়েছে।

আমার কি ifচেক স্টেটমেন্ট দরকার ?

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

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

বোনাস

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

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

3
এটি অনুমান করে যে সরবরাহ করা ইউআরএলটিতে এটিতে http রয়েছে।
ইগোরগানাপলস্কি

56

২.৩-এ আমার ভাগ্য ভাল ছিল

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

পার্থক্যটি স্ট্রিংয়ের Intent.ACTION_VIEWপরিবর্তে ব্যবহার করা"android.intent.action.VIEW"


1
ওহাত কি আলাদা?
ব্যবহারকারী 1324936

1
এই উত্তরটি আমাকে প্রচুর সাহায্য করেছিল। পার্থক্যটি কী ছিল তা আমি জানি না, তবে আমাদের ২.৩ সহ একটি সমস্যা ছিল যা এটি সমাধান করেছে। কেউ কি জানেন যে বাস্তবায়নে পার্থক্য কী?
ইনোভা 21

2
অ্যান্ড্রয়েড বিকাশকারীর মতে: এই উত্তর - "প্রদত্ত ক্রিয়া সহ একটি অভিপ্রায় তৈরি করুন other এবং গৃহীত উত্তর - "প্রদত্ত ক্রিয়া এবং প্রদত্ত ডেটা url এর জন্য একটি উদ্দেশ্য তৈরি করুন।"
তেওঁ ইনেকে

30

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

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);

4
নোট করুন যে প্লাগইনগুলি এবং এগুলি ওয়েবভিউতে অক্ষম রয়েছে এবং ইন্টারনেট অনুমতিগুলির প্রয়োজন হবে। ( রেফারেন্স )

22

আপনি যদি সমস্ত ব্রাউজার তালিকার সাথে ব্যবহারকারীকে একটি কথোপকথন দেখাতে চান তবে তিনি পছন্দসই চয়ন করতে পারেন, এখানে নমুনা কোডটি রয়েছে:

private static final String HTTPS = "https://";
private static final String HTTP = "http://";

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

     if (!url.startsWith(HTTP) && !url.startsWith(HTTPS)) {
            url = HTTP + url;
     }

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
     context.startActivity(Intent.createChooser(intent, "Choose browser"));// Choose browser is arbitrary :)

}

5
যদি এমন একাধিক অ্যাপস থাকে যা অভিপ্রায়টি পরিচালনা করতে পারে তবে সিস্টেমটি স্বয়ংক্রিয়ভাবে কোনও চয়নকারী সরবরাহ করবে, তাই না?
জেফ্রি ব্লাটম্যান

@ xmen-wk কারণ url ইথার দিয়ে httpবা ইথার শুরু করতে পারে httpsএবং জাভাতে 'ম্যাজিক স্ট্রিংস' ধ্রুবক হিসাবে ঘোষণা করা ভাল অভ্যাস।
Dmytro Danylyk

thx, সম্পর্কে জানতাম না context.startActivity। বহিরাগত শ্রেণি থেকে কল করার সময় এটি খুব দরকারী
WuphaelDev

18

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

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

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.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

ক্রোম কাস্টম ট্যাবগুলিতে URL খোলার একটি উপায়ও রয়েছে । কোটলিনে উদাহরণ:

@JvmStatic
fun openWebsite(activity: Activity, websiteUrl: String, useWebBrowserAppAsFallbackIfPossible: Boolean) {
    var websiteUrl = websiteUrl
    if (TextUtils.isEmpty(websiteUrl))
        return
    if (websiteUrl.startsWith("www"))
        websiteUrl = "http://$websiteUrl"
    else if (!websiteUrl.startsWith("http"))
        websiteUrl = "http://www.$websiteUrl"
    val finalWebsiteUrl = websiteUrl
    //https://github.com/GoogleChrome/custom-tabs-client
    val webviewFallback = object : CustomTabActivityHelper.CustomTabFallback {
        override fun openUri(activity: Activity, uri: Uri?) {
            var intent: Intent
            if (useWebBrowserAppAsFallbackIfPossible) {
                intent = Intent(Intent.ACTION_VIEW, Uri.parse(finalWebsiteUrl))
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY
                        or Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
                if (!CollectionUtil.isEmpty(activity.packageManager.queryIntentActivities(intent, 0))) {
                    activity.startActivity(intent)
                    return
                }
            }
            // open our own Activity to show the URL
            intent = Intent(activity, WebViewActivity::class.java)
            WebViewActivity.prepareIntent(intent, finalWebsiteUrl)
            activity.startActivity(intent)
        }
    }
    val uri = Uri.parse(finalWebsiteUrl)
    val intentBuilder = CustomTabsIntent.Builder()
    val customTabsIntent = intentBuilder.build()
    customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY
            or Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
    CustomTabActivityHelper.openCustomTab(activity, customTabsIntent, uri, webviewFallback)
}

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

@ দ্য অরিগিনাল অ্যান্ড্রয়েড ক্র্যাশ এবং ওয়েব ব্রাউজারের সাথে এর কী আছে তা আমি বুঝতে পারি না। আপনি কী করতে চাইছেন তা দয়া করে ব্যাখ্যা করুন।
অ্যান্ড্রয়েড বিকাশকারী

আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ. আপনার পোস্ট আকর্ষণীয়। বিশেষ করে ওয়েব লঞ্চের জন্য কোনও নতুন কাজ খোলার সুবিধা কী?
অরিজিনাল অ্যান্ড্রয়েড

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

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
অবচয়

17

ওয়েবভিউ ব্যবহার করে একই অ্যাপ্লিকেশনটিতে লোড অর্লে অন্যান্য বিকল্প

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

নোট করুন যে প্লাগইনগুলি এবং এগুলি ওয়েবভিউতে অক্ষম রয়েছে এবং ইন্টারনেট অনুমতিগুলির প্রয়োজন হবে। ( রেফারেন্স )

12

আপনি এই পথে যেতে পারেন

এক্সএমএলে:

<?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");

 }

}

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


এটি আকর্ষণীয় এবং ভিন্ন। আমি অনুমান করি যে এইভাবে ব্যবহারকারী আমার অ্যাপটিতে একটি ওয়েব ব্রাউজার দেখে। এটা কি সঠিক? আমি upvote।
অরিজিনাল অ্যান্ড্রয়েড

9

আপনার আবেদনে url লোড করতে ওয়েবভিউ ব্যবহার করা যেতে পারে। URL টি পাঠ্য দর্শনে ব্যবহারকারী থেকে সরবরাহ করা যেতে পারে বা আপনি এটি হার্ডকোড করতে পারেন।

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

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;
    }
}

1
এটি আমার ভিডিওর সমস্যা স্থির করেছে: github.com/CrandellWS/VideoEnabledWebView/blob/master/app/src/…
CrandellWS

6

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

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


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

6

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

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

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

5

সহজ এবং সেরা অনুশীলন

পদ্ধতি 1:

String intentUrl="www.google.com";
Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(intentUrl));
    if(webIntent.resolveActivity(getPackageManager())!=null){
        startActivity(webIntent);    
    }else{
      /*show Error Toast 
              or 
        Open play store to download browser*/
            }

পদ্ধতি 2:

try{
    String intentUrl="www.google.com";
    Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(intentUrl));
        startActivity(webIntent);
    }catch (ActivityNotFoundException e){
                /*show Error Toast
                        or
                  Open play store to download browser*/
    }

ব্যবহার করুন context!!.packageManagerপরিবর্তে getPackageManager()একটি Fragment
কুলমাইন্ড


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

স্বাগতম, নবাগত দয়া করে উত্তরটি আরও সম্পূর্ণ করুন, ভেরিয়েবলগুলি ঘোষণা করে যে মূল কোডে নেই।
টনি গিল

3

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

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

এই তথ্য থেকে নেওয়া হয়েছে: https://developer.xamarin.com/recips/android/fundamentals/intent/open_a_webpage_in_the_ ব্রাউজার_ অ্যাপ্লিকেশন /


3

ক্রোম কাস্টম ট্যাবগুলি এখন উপলভ্য:

প্রথম পদক্ষেপটি আপনার বিল্ড.gradle ফাইলটিতে কাস্টম ট্যাব সহায়তা লাইব্রেরি যুক্ত করছে:

dependencies {
    ...
    compile 'com.android.support:customtabs:24.2.0'
}

এবং তারপরে ক্রোম কাস্টম ট্যাবটি খুলতে:

String url = "https://www.google.pt/";
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));

আরও তথ্যের জন্য: https://developer.chrome.com/m Multidevice/ android / customtabs


2

মার্ক বিয়ের উত্তর এবং মন্তব্যগুলি নম্রভাবে ভিত্তি করে:

protected void launchUrl(String url) {
    Uri uri = Uri.parse(url);

    if (uri.getScheme() == null || uri.getScheme().isEmpty()) {
        uri = Uri.parse("http://" + url);
    }

    Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri);

    if (browserIntent.resolveActivity(getPackageManager()) != null) {
        startActivity(browserIntent);
    }
}

2

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

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কোড চেক করুন ।


2

ঠিক আছে, আমি প্রতিটি উত্তর যাচাই করেছিলাম তবে ব্যবহারকারীরা যে 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);

ধন্যবাদ!


ভাল উত্তর. এটি ব্যাখ্যা করে যে কীভাবে কোনও নির্দিষ্ট ব্রাউজারে সরাসরি ইন্টেন্ট ইউআরএল খুলতে হয় (সরাসরি) এবং কোনও ব্রাউজার বাছাই করা সিস্টেমে নির্ভর করে না।
মিঃ-আইডিই

2

সহজ, উদ্দেশ্য ওয়েবসাইটের মাধ্যমে ভিউ,

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

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

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

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

2
String url = "https://www.thandroid-mania.com/";
if (url.startsWith("https://") || url.startsWith("http://")) {
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
}else{
    Toast.makeText(mContext, "Invalid Url", Toast.LENGTH_SHORT).show();
}

এই ত্রুটিটি অবৈধ URL এর কারণে ঘটেছে, অ্যান্ড্রয়েড ওএস আপনার ডেটার জন্য অ্যাকশন ভিউটি খুঁজে পাচ্ছে না। সুতরাং আপনার কাছে বৈধতা আছে যে URL টি বৈধ কিনা valid


1

আমি মনে করি এটি সেরা

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);
    }

1

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

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);

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

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


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


1

// অনক্লিক শ্রোতা

  @Override
      public void onClick(View v) {
        String webUrl = news.getNewsURL();
        if(webUrl!="")
        Utils.intentWebURL(mContext, webUrl);
      }

// আপনার ইউটিল পদ্ধতি od

public static void intentWebURL(Context context, String url) {
        if (!url.startsWith("http://") && !url.startsWith("https://")) {
            url = "http://" + url;
        }
        boolean flag = isURL(url);
        if (flag) {
            Intent browserIntent = new Intent(Intent.ACTION_VIEW,
                    Uri.parse(url));
            context.startActivity(browserIntent);
        }

    }

"IsURL" সংজ্ঞায়িত কোথায়?
ক্যাবুকসা.ম্যাপছে

1

ব্রাউজারে আপনার url খোলার জন্য কেবল সংক্ষিপ্তটির সাথে যান:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("YourUrlHere"));
startActivity(browserIntent);

1

কোটলিন উত্তর:

val browserIntent = Intent(Intent.ACTION_VIEW, uri)
ContextCompat.startActivity(context, browserIntent, null)

Uriএটিকে আরও সহজ করতে আমি একটি এক্সটেনশন যুক্ত করেছি

fun Uri?.openInBrowser(context: Context) {
    this ?: return // Do nothing if uri is null

    val browserIntent = Intent(Intent.ACTION_VIEW, this)
    ContextCompat.startActivity(context, browserIntent, null)
}

বোনাস হিসাবে, একটি স্ট্রিংকে উড়িতে নিরাপদে রূপান্তর করতে এখানে একটি সাধারণ এক্সটেনশন ফাংশন।

fun String?.asUri(): Uri? {
    try {
        return Uri.parse(this)
    } catch (e: Exception) {}
    return null
}

1

সুতরাং আমি এটি দীর্ঘ সময়ের জন্য অনুসন্ধান করেছি কারণ অন্য সমস্ত উত্তরগুলি সেই লিঙ্কটির জন্য ডিফল্ট অ্যাপ্লিকেশনটি খোলার ছিল, কিন্তু ডিফল্ট ব্রাউজার নয় এবং এটিই আমি চেয়েছিলাম।

অবশেষে আমি তা করতে পেরেছি:

// gathering the default browser
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://"));
final ResolveInfo resolveInfo = context.getPackageManager()
    .resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String defaultBrowserPackageName = resolveInfo.activityInfo.packageName;


final Intent intent2 = new Intent(Intent.ACTION_VIEW);
intent2.setData(Uri.parse(url));

if (!defaultBrowserPackageName.equals("android") {
    // android = no default browser is set 
    // (android < 6 or fresh browser install or simply no default set)
    // if it's the case (not in this block), it will just use normal way.
    intent2.setPackage(defaultBrowserPackageName);
}

context.startActivity(intent2);

contextবিটিডাব্লু , আপনি খেয়াল করতে পারেন। যাই হোক না কেন, কারণ আমি এটি একটি স্ট্যাটিক ব্যবহার পদ্ধতির জন্য ব্যবহার করেছি, আপনি যদি কোনও ক্রিয়াকলাপে এটি করে থাকেন তবে এটির দরকার নেই।



0

এটি চেষ্টা করুন .. আমার জন্য কাজ!

    public void webLaunch(View view) {
            WebView myWebView = (WebView) findViewById(R.id.webview);
            myWebView.setVisibility(View.VISIBLE);
            View view1=findViewById(R.id.recharge);
            view1.setVisibility(View.GONE);
            myWebView.getSettings().setJavaScriptEnabled(true);
            myWebView.loadUrl("<your link>");

        }

এক্সএমএল কোড: -

 <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:visibility="gone"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />

--------- বা ------------------

String url = "";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

বেশিরভাগ অ্যাপ্লিকেশনগুলির জন্য, একটি ওয়েবভিউ যুক্ত করা এটির পক্ষে একটি শক্ত উপায়। এটি ব্রাউজারে ইউআরএল খোলার পক্ষে সহজ।
জো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.