Pertanyaan Bagaimana saya bisa membuka URL di browser web Android dari aplikasi saya?


Bagaimana cara membuka URL dari kode di browser web built-in daripada di dalam aplikasi saya?

Saya mencoba ini:

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

tapi saya mendapat Pengecualian:

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

1073
2018-02-04 17:51


asal


Jawaban:


Coba ini:

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

Itu berfungsi dengan baik untuk saya.

Adapun yang hilang "http: //" Saya hanya akan melakukan sesuatu seperti ini:

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

Saya juga mungkin akan mengisi dulu EditText Anda bahwa pengguna mengetikkan URL dengan "http: //".


2036
2018-02-04 18:01



cara umum untuk mencapai ini adalah dengan kode berikutnya:

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

yang dapat diubah menjadi versi kode pendek ...

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

atau :

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

Yang paling pendek! :

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

selamat coding!


60
2018-05-27 14:20



Dalam 2,3, saya lebih beruntung dengan

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

Perbedaannya adalah penggunaan Intent.ACTION_VIEW bukan String "android.intent.action.VIEW"


47
2018-03-16 15:35



Jawaban Sederhana

Anda bisa lihat sampel resmi dari Pengembang Android.

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

Bagaimana itu bekerja

Silakan lihat konstruktor dari Intent:

public Intent (String action, Uri uri)

Anda bisa lulus android.net.Uri contoh ke parameter ke-2, dan Niat baru dibuat berdasarkan url data yang diberikan.

Dan kemudian, panggil saja startActivity(Intent intent) untuk memulai Aktivitas baru, yang dipaketkan dengan Intent dengan URL yang diberikan.

Apakah saya membutuhkan if periksa pernyataan?

Iya nih. Itu dokumen mengatakan:

Jika tidak ada aplikasi di perangkat yang dapat menerima maksud tersirat, aplikasi Anda akan mogok ketika memanggil startActivity (). Untuk pertama memverifikasi bahwa aplikasi ada untuk menerima maksud, panggil resolveActivity () pada objek Intent Anda. Jika hasilnya tidak nol, setidaknya ada satu aplikasi yang dapat menangani maksud dan aman untuk memanggil startActivity (). Jika hasilnya nol, Anda tidak boleh menggunakan maksud itu dan, jika mungkin, Anda harus menonaktifkan fitur yang memanggil maksud tersebut.

Bonus

Anda dapat menulis dalam satu baris saat membuat contoh Intent seperti di bawah ini:

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

36
2017-08-24 05:06



Coba ini:

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

atau jika Anda ingin maka browser web terbuka dalam aktivitas Anda maka lakukan seperti ini:

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

dan jika Anda ingin menggunakan kontrol zoom di browser Anda, maka Anda dapat menggunakan:

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

24
2017-08-31 10:10



Jika Anda ingin menunjukkan dialog kepada pengguna dengan semua daftar browser, sehingga ia dapat memilih yang diinginkan, berikut ini contoh kode:

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

}

20
2018-01-09 08:55



Sama seperti solusi lain yang telah ditulis (yang berfungsi dengan baik), saya ingin menjawab hal yang sama, tetapi dengan tip yang saya pikir sebagian besar akan lebih suka digunakan.

Jika Anda ingin aplikasi yang Anda mulai buka di tugas baru, indepandant Anda sendiri, alih-alih tinggal di tumpukan yang sama, Anda dapat menggunakan kode ini:

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

15
2018-04-08 09:19



opsi lain Dalam Muat Url dalam Aplikasi yang Sama menggunakan Webview

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

14
2018-06-25 08:01