Ich teste derzeit eine Webanwendung, die mit vielen jQuery-Animationen entwickelt wurde, und wir haben festgestellt, dass die Leistung des integrierten Webbrowsers sehr schlecht ist. Beim Testen in Chrome ist die Leistung der Webanwendung unglaublich schneller. Ich frage mich nur, ob es irgendeine Art von Skript gibt, die das Öffnen eines Links in Chrome für Android erzwingt, ähnlich wie in iOS.
android
google-chrome
mobile
browser
user1607943
quelle
quelle
Antworten:
Eine elegantere Möglichkeit, dies zu erreichen, besteht darin, die
Intent.ACTION_VIEW
Absicht wie gewohnt zu verwenden, das Paketcom.android.chrome
jedoch der Absicht hinzuzufügen . Dies funktioniert unabhängig davon, ob Chrome der Standardbrowser ist, und stellt genau das gleiche Verhalten sicher, als hätte der Benutzer Chrome aus der Auswahlliste ausgewählt.String urlString = "http://mysuperwebsite"; Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(urlString)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setPackage("com.android.chrome"); try { context.startActivity(intent); } catch (ActivityNotFoundException ex) { // Chrome browser presumably not installed so allow user to choose instead intent.setPackage(null); context.startActivity(intent); }
Aktualisieren
Für Kindle-Geräte:
Nur für den Fall, dass Sie den Amazon-Standardbrowser öffnen möchten, falls die Chrome-App nicht auf dem Amazon Kindle installiert ist
String urlString = "http://mysuperwebsite"; Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(urlString)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setPackage("com.android.chrome"); try { context.startActivity(intent); } catch (ActivityNotFoundException ex) { // Chrome browser presumably not installed and open Kindle Browser intent.setPackage("com.amazon.cloud9"); context.startActivity(intent); }
quelle
intent
erfüllt werden.Es gibt zwei Lösungen.
Per Paket
String url = "http://www.example.com"; Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.setPackage("com.android.chrome"); try { startActivity(i); } catch (ActivityNotFoundException e) { // Chrome is probably not installed // Try with the default browser i.setPackage(null); startActivity(i); }
Nach Schema
String url = "http://www.example.com"; try { Uri uri = Uri.parse("googlechrome://navigate?url=" + url); Intent i = new Intent(Intent.ACTION_VIEW, uri); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } catch (ActivityNotFoundException e) { // Chrome is probably not installed }
WARNUNG! Die folgende Technik funktioniert nicht auf den neuesten Versionen von Android. Es dient als Referenz, da es diese Lösung schon seit einiger Zeit gibt:
String url = "http://www.example.com"; try { Intent i = new Intent("android.intent.action.MAIN"); i.setComponent(ComponentName.unflattenFromString("com.android.chrome/com.android.chrome.Main")); i.addCategory("android.intent.category.LAUNCHER"); i.setData(Uri.parse(url)); startActivity(i); } catch(ActivityNotFoundException e) { // Chrome is probably not installed }
quelle
try{}
Stellen Sie sicher, dass Sie das mit einem - Ich habe gerade auf einem Telefon getestet, auf dem kein Chrom installiert war und die explizite Absicht die App zum Absturz brachteAlle vorgeschlagenen Lösungen funktionieren bei mir nicht mehr. Dank @pixelbandito hat er mich in die richtige Richtung gelenkt. Ich habe die nächste Konstante in den Chromquellen gefunden
public static final String GOOGLECHROME_NAVIGATE_PREFIX = "googlechrome://navigate?url=";
Und die nächste Verwendung:
Intent intent = new Intent("android.intent.action.VIEW", Uri.parse("googlechrome://navigate?url=chrome-native://newtab/"));
Die Lösung lautet also (beachten Sie, dass die URL nicht codiert werden sollte).
void openUrlInChrome(String url) { try { try { Uri uri = Uri.parse("googlechrome://navigate?url="+ url); Intent i = new Intent(Intent.ACTION_VIEW, uri); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } catch (ActivityNotFoundException e) { Uri uri = Uri.parse(url); // Chrome is probably not installed // OR not selected as default browser OR if no Browser is selected as default browser Intent i = new Intent(Intent.ACTION_VIEW, uri); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } } catch (Exception ex) { Timber.e(ex, null); } }
quelle
Dies funktioniert in Firefox und Opera
document.location = 'googlechrome://navigate?url=www.example.com/';
quelle
Hier ist die nächste , die ich gefunden habe: Schreiben einer URL und ersetzt
http
mitgooglechrome
öffnet Chrome, aber es scheint nicht spezifiziert die URL zu öffnen. Ich arbeite mit einem Samsung Galaxy S5, Android 5.0Das ist das Beste, was ich gefunden habe - für jede andere Lösung, die ich auf SO gesehen habe, ist eine Android-App erforderlich, keine Webapp.
quelle
Die verschiedenen Antworten oben sind gut, aber keine ist vollständig. Das alles passte mir am besten, was:
Versuchen Sie, den Chrome-Webbrowser zu öffnen. Falls eine Ausnahme auftritt (Chrome ist nicht standardmäßig oder nicht installiert), werden Sie aufgefordert, den Browser vom Benutzer auszuwählen:
String uriString = "your uri string"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uriString)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setPackage("com.android.chrome"); try { Log.d(TAG, "onClick: inTryBrowser"); startActivity(intent); } catch (ActivityNotFoundException ex) { Log.e(TAG, "onClick: in inCatchBrowser", ex ); intent.setPackage(null); startActivity(Intent.createChooser(intent, "Select Browser")); }
quelle
private static final String TAG = "MainActivity";
Nach der Antwort von @ philippe_b möchte ich hinzufügen, dass dieser Code nicht funktioniert, wenn Chrome nicht installiert ist. Es gibt noch einen weiteren Fall, in dem es nicht funktioniert - dies ist der Fall, wenn Chrome NICHT als Standardbrowser ausgewählt ist (aber installiert ist) ODER auch wenn kein Browser als Standardbrowser ausgewählt ist.
Fügen Sie in solchen Fällen auch den folgenden catch-Teil des Codes hinzu.
try { Intent i = new Intent("android.intent.action.MAIN"); i.setComponent(ComponentName.unflattenFromString("com.android.chrome/com.android.chrome.Main")); i.addCategory("android.intent.category.LAUNCHER"); i.setData(Uri.parse("http://mysuperwebsite")); startActivity(i); } catch(ActivityNotFoundException e) { // Chrome is probably not installed // OR not selected as default browser OR if no Browser is selected as default browser Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("somesite.com")); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); }
quelle
Hier ist ein allgemeinerer Ansatz: Er ermittelt zuerst den Paketnamen für den Standardbrowser, der "http: //" - URLs verarbeitet, und verwendet dann den in den anderen Antworten genannten Ansatz, um die URL in einem Browser explizit zu öffnen:
public void openUrlInBrowser(Context context, String url) { // Find out package name of default browser Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://")); ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY); String packageName = resolveInfo.activityInfo.packageName; // Use the explicit browser package name Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); i.setPackage(packageName); context.startActivity(i); }
quelle
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("your url link")); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.setPackage("com.android.chrome"); try { context.startActivity(i); } catch (ActivityNotFoundException e) { Toast.makeText(context, "unable to open chrome", Toast.LENGTH_SHORT).show(); i.setPackage(null); context.startActivity(i); }
val i = Intent(Intent.ACTION_VIEW, Uri.parse("https://stackoverflow.com/")) i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) i.setPackage("com.android.chrome") try { context!!.startActivity(i) } catch (e: ActivityNotFoundException) { Toast.makeText(context, "unable to open chrome", Toast.LENGTH_SHORT).show() i.setPackage(null) context!!.startActivity(i) }
quelle
In Google Play gibt es eine Vielzahl von Chrome-Browser-Apps mit unterschiedlichen Funktionen
Es ist also richtig, alle zu überprüfen
fun Context.openChrome(url: String, onError: (() -> Unit)? = null) { openBrowser("com.android.chrome", url) { openBrowser("com.android.beta", url) { openBrowser("com.android.dev", url) { openBrowser("com.android.canary", url) { onError?.invoke() ?: openBrowser(null, url) } } } } } fun Context.openBrowser(packageName: String?, url: String, onError: (() -> Unit)? = null) { try { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)).apply { setPackage(packageName) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) }) } catch (e: ActivityNotFoundException) { onError?.invoke() } }
quelle