Android 深度链接仅打开应用程序的一个实例?
当应用程序关闭时,深层链接工作正常。但如果应用程序已经打开,deeplink只会打开应用程序,而不是打开该链接 MainActivity.java文件:Android 深度链接仅打开应用程序的一个实例?,android,deep-linking,Android,Deep Linking,当应用程序关闭时,深层链接工作正常。但如果应用程序已经打开,deeplink只会打开应用程序,而不是打开该链接 MainActivity.java文件: public class MainActivity extends Activity{ private ProgressBar progressBar; private WebView webView; private SwipeRefreshLayout mySwipeRefreshLayout; privat
public class MainActivity extends Activity{
private ProgressBar progressBar;
private WebView webView;
private SwipeRefreshLayout mySwipeRefreshLayout;
private boolean mShouldPause;
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax(100);
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClientDemo());
webView.setWebChromeClient(new WebChromeClientDemo());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.clearCache(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
mySwipeRefreshLayout = (SwipeRefreshLayout) this.findViewById(R.id.swipeContainer);
mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webView.reload();
mySwipeRefreshLayout.setRefreshing(false);
}
}
);
private class WebViewClientDemo extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(View.GONE);
progressBar.setProgress(100);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
}
}
private class WebChromeClientDemo extends WebChromeClient {
public void onProgressChanged(WebView view, int progress) {
progressBar.setProgress(progress);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
else {
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@Override
// This method is used to detect back button
public void onBackPressed() {
if (this.webView.canGoBack()) {
this.webView.goBack();
return;
}
else {
// Let the system handle the back button
super.onBackPressed();
}
}
}
假设我通过电报打开应用程序链接(当应用程序未运行时),它会完全打开。但当应用程序在后台运行,然后单击电报中的应用程序链接时,它只会打开应用程序,而不是打开特定的链接。当应用程序在后台或前台运行时。对于您的情况:
- 在活动的清单中添加应用程序启动模式
singleTop
- 在活动句柄中,打开
onNewintent(Intent)
好故事,我们如何帮助您,有代码吗?您好,您应该展示一些代码示例,这样我们就确切地知道如何帮助您。@MaximShoustin添加了代码@Zoe添加了代码我有多个应用程序链接,例如:,,那么我应该在//中写些什么来打开这里的链接?当你得到
url
时,你可以打开它<代码>webView.loadUrl(uri.toString())代码>
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null && uri.toString().startsWith("http://")
|| uri.toString().startsWith("https://")) {
//open the link here
}
}