Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 深度链接仅打开应用程序的一个实例?_Android_Deep Linking - Fatal编程技术网

Android 深度链接仅打开应用程序的一个实例?

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

当应用程序关闭时,深层链接工作正常。但如果应用程序已经打开,deeplink只会打开应用程序,而不是打开该链接

MainActivity.java文件:

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
       }
    }