Я хотел бы открыть ссылки в браузерах с помощью хоста example.com
или example.de
в моем приложении Android с веб-просмотром.
Я создал это намерение:Открыть ссылку с браузера в Android Webview
<intent-filter>
<data android:scheme="https" android:host="example.com" />
<data android:scheme="https" android:host="example.de" />
<data android:scheme="http" android:host="example.com" />
<data android:scheme="http" android:host="example.de" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
По умолчанию WebView загружает URL example.com
, вот мой OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
final ProgressDialog pd = ProgressDialog.show(this, "", "Loading...", true);
mWebView = (WebView) findViewById(R.id.activity_main_webview);
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Stop local links and redirects from opening in browser instead of WebView
mWebView.setWebViewClient(new MyAppWebViewClient());
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
pd.show();
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
if (pd.isShowing() && pd != null) {
pd.dismiss();
}
}
});
mWebView.loadUrl(url);
}
Это мой shouldOverrideUrlLoading():
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(Uri.parse(url).getHost().endsWith("example.com") || Uri.parse(url).getHost().endsWith("example.de")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
}
Теперь я застрял. Если вы нажмете на URL-адрес example.com/otherurl.php
в веб-браузере, приложение откроется, но загрузите URL-адрес по умолчанию example.com
. Как я могу открыть приложение и загрузить example.com/otherurl.php
вместо example.com
?
я уже читал here, что мне нужен этот кусок кода, чтобы получить URL:
Uri data = getIntent().getData();
String extUrl = data.toString();
Но где я должен реализовать этот код? Thanks
Хм, это слишком просто ^^ Я думал, что я уже пробовал это ... Большое спасибо, это работает отлично! –