Bagaimana cara membuka URL dari kode di peramban web bawaan alih-alih 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
Jawaban:
Coba ini:
Itu bekerja dengan baik untuk saya.
Adapun "http: //" yang hilang saya hanya akan melakukan sesuatu seperti ini:
Saya mungkin juga akan pra-mengisi EditText Anda bahwa pengguna mengetik URL dengan "http: //".
sumber
http://
skema - pengecualian yang ditunjukkan menunjukkan bahwa URL Anda kurang memiliki skema.if (!url.startsWith("http://") && !url.startsWith("https://"))
adalah kesalahan umum yang dapat mengarahkan Anda ke url seperti file: // dan merusak beberapa usecases yang baik. Cobalah mengurai uri dengan kelas URI dan periksa apakah ada skema. Jika tidak, tambahkan "http: //";)resolveCheck
. Lihat dokumen resmi : Perhatian: Jika tidak ada aplikasi di perangkat yang dapat menerima maksud tersirat, aplikasi Anda akan macet ketika memanggil startActivity (). Untuk terlebih dahulu memverifikasi bahwa ada aplikasi untuk menerima niat, panggil resolActivity () pada objek Intent Anda.cara umum untuk mencapai ini adalah dengan kode berikut:
yang dapat diubah ke versi kode pendek ...
atau :
terpendek! :
selamat coding!
sumber
Jawaban Sederhana
Anda dapat melihat sampel resmi dari Pengembang Android .
Bagaimana itu bekerja
Silakan lihat di konstruktor
Intent
:Anda dapat mengirimkan
android.net.Uri
instance ke parameter ke-2, dan Intent baru dibuat berdasarkan url data yang diberikan.Dan kemudian, cukup panggil
startActivity(Intent intent)
untuk memulai Kegiatan baru, yang dibundel dengan Intent dengan URL yang diberikan.Apakah saya perlu
if
pernyataan cek?Iya. The docs mengatakan:
Bonus
Anda dapat menulis dalam satu baris saat membuat instance Intent seperti di bawah ini:
sumber
Pada 2.3, saya lebih beruntung
Perbedaannya adalah penggunaan
Intent.ACTION_VIEW
daripada String"android.intent.action.VIEW"
sumber
Coba ini:
atau jika Anda ingin maka browser web terbuka di aktivitas Anda maka lakukan seperti ini:
dan jika Anda ingin menggunakan kontrol zoom di browser Anda maka Anda dapat menggunakan:
sumber
Jika Anda ingin menunjukkan kepada pengguna dialog dengan semua daftar peramban, sehingga ia dapat memilih yang disukai, berikut ini contoh kode:
sumber
http
atauhttps
, dan dalam java itu adalah praktik yang baik untuk mendeklarasikan 'string ajaib' sebagai konstanta.context.startActivity
. Sangat berguna saat memanggilnya dari kelas eksternalSama seperti solusi lain yang telah ditulis (yang berfungsi dengan baik), saya ingin menjawab hal yang sama, tetapi dengan tip yang saya pikir sebagian besar lebih suka menggunakan.
Jika Anda ingin aplikasi yang Anda buka di tugas baru, tidak tergantung pada Anda sendiri, alih-alih tetap berada di tumpukan yang sama, Anda dapat menggunakan kode ini:
Ada juga cara untuk membuka URL di Tab Kustom Chrome . Contoh di Kotlin:
sumber
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
sudah ditinggalkanpilihan lain Di Muat Url dalam Aplikasi yang Sama menggunakan Webview
sumber
Anda juga bisa pergi dengan cara ini
Dalam xml:
Dalam kode java:
Dalam Manifest jangan lupa menambahkan izin internet ...
sumber
Webview dapat digunakan untuk memuat Url dalam aplikasi Anda. URL dapat diberikan dari pengguna dalam tampilan teks atau Anda dapat men-kodenya.
Juga jangan lupa izin internet di AndroidManifest.
sumber
Versi kode pendek ...
sumber
Di dalam blok percobaan Anda, rekatkan kode berikut, Android Intent menggunakan langsung tautan dalam kurung kurawal URI (Uniform Resource Identifier) untuk mengidentifikasi lokasi tautan Anda.
Anda dapat mencoba ini:
sumber
Praktik Sederhana dan Terbaik
Metode 1:
Metode 2:
sumber
context!!.packageManager
sebagai gantigetPackageManager()
dalam aFragment
.sumber
sumber
Respons MarkB benar. Dalam kasus saya, saya menggunakan Xamarin, dan kode yang digunakan dengan C # dan Xamarin adalah:
Informasi ini diambil dari: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/
sumber
Tab khusus Chrome sekarang tersedia:
Langkah pertama adalah menambahkan Perpustakaan Dukungan Tab Kustom ke file build.gradle Anda:
Dan kemudian, untuk membuka tab khusus krom:
Untuk info lebih lanjut: https://developer.chrome.com/multidevice/android/customtabs
sumber
Berdasarkan jawaban Mark B dan komentar di bawah:
sumber
android.webkit.URLUtil
memiliki metode yangguessUrl(String)
berfungsi dengan baik (bahkan denganfile://
ataudata://
) sejakApi level 1
(Android 1.0). Digunakan sebagai:Dalam panggilan Aktivitas:
Periksa
guessUrl
kode lengkap untuk info lebih lanjut.sumber
Oke, saya memeriksa setiap jawaban tetapi aplikasi apa yang memiliki deeplinking dengan URL yang sama yang ingin digunakan pengguna?
Hari ini saya dapat kasus ini dan jawabannya adalah
browserIntent.setPackage("browser_package_name");
misalnya:
Terima kasih!
sumber
Sederhana, tampilan situs web melalui niat,
gunakan kode sederhana ini untuk melihat situs web Anda di aplikasi android.
Tambahkan izin internet dalam file manifes,
sumber
Kesalahan itu terjadi karena URL tidak valid, OS Android tidak dapat menemukan tampilan tindakan untuk data Anda. Jadi, Anda telah memvalidasi bahwa URL itu valid atau tidak.
sumber
Saya pikir ini yang terbaik
Masukkan kode di bawah ini ke dalam kelas global
sumber
Cara ini menggunakan metode, untuk memungkinkan Anda memasukkan String apa pun alih-alih memiliki input tetap. Ini menghemat beberapa baris kode jika digunakan berulang kali, karena Anda hanya perlu tiga baris untuk memanggil metode.
Menggunakan metode ini membuatnya dapat digunakan secara universal. TI tidak harus ditempatkan dalam aktivitas tertentu, karena Anda dapat menggunakannya seperti ini:
Atau jika Anda ingin memulainya di luar suatu aktivitas, Anda cukup memanggil startActivity pada instance aktivitas:
Seperti yang terlihat di kedua blok kode ini ada cek-nol. Ini karena mengembalikan nol jika tidak ada aplikasi untuk menangani maksud.
Metode ini default ke HTTP jika tidak ada protokol yang ditentukan, karena ada situs web yang tidak memiliki sertifikat SSL (apa yang Anda butuhkan untuk koneksi HTTPS) dan itu akan berhenti berfungsi jika Anda mencoba menggunakan HTTPS dan tidak ada . Situs web apa pun masih bisa memaksakan ke HTTPS, jadi pihak-pihak tersebut mendarat Anda di HTTPS
Karena metode ini menggunakan sumber daya luar untuk menampilkan halaman, Anda tidak perlu mendeklarasikan izin Internet. Aplikasi yang menampilkan halaman web harus melakukan itu
sumber
// Pendengar OnClick
// Metode Utilismu
sumber
Cukup buka yang singkat untuk membuka Url Anda di Browser:
sumber
The Kotlin menjawab:
Saya telah menambahkan ekstensi
Uri
untuk membuatnya lebih mudahSebagai bonus, berikut adalah fungsi ekstensi sederhana untuk mengkonversi String ke Uri dengan aman.
sumber
Jadi saya sudah lama mencari ini karena semua jawaban lain membuka aplikasi default untuk tautan itu, tetapi bukan browser default dan itulah yang saya inginkan.
Saya akhirnya berhasil melakukannya:
BTW, Anda dapat melihat.
context
Apa pun, karena saya telah menggunakan ini untuk metode util statis, jika Anda melakukan ini dalam suatu kegiatan, itu tidak diperlukan.sumber
Periksa apakah url Anda benar. Bagi saya ada ruang yang tidak diinginkan sebelum url.
sumber
Coba ini..Bekerja untuk saya!
kode xml: -
--------- ATAU------------------
sumber