Java 在Android浏览器/webview中处理链接以直接启动应用程序

Java 在Android浏览器/webview中处理链接以直接启动应用程序,java,android,Java,Android,我想从一个链接打开我的申请, 按照……的指示。 嗯,它很好用(大多数时候……这就是我寻求帮助的原因) 我的html链接是 我的意图过滤器在表单中 , 它们允许您仅将启动指向您的应用程序,而用户无需选择转到浏览器或任何其他应用程序 您的意图过滤器与Diana提到的相同 <activity android:name=".AntonWorld" android:label="@string/app_name"> <intent-filter>

我想从一个链接打开我的申请, 按照……的指示。 嗯,它很好用(大多数时候……这就是我寻求帮助的原因)

我的html链接是


我的意图过滤器在表单中


,

它们允许您仅将启动指向您的应用程序,而用户无需选择转到浏览器或任何其他应用程序


您的意图过滤器与Diana提到的相同

<activity android:name=".AntonWorld"
      android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <data android:scheme="anton" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

所以你的应该是:

<intent-filter> 
    <data android:scheme="com.mark.MY_ACTION"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>

未测试是否需要android.intent.category.VIEW。让我知道它是否有效。

试试我的简单技巧:

        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if(url.startsWith("classRegister:")) {                  
                Intent MnRegister = new Intent(getApplicationContext(), register.class); startActivity(MnRegister);
            }               
            view.loadUrl(url);
            return true;
        }
和我的html链接:

<a href="classRegister:true">Go to register.java</a>

将此代码添加到
Manifest.xml



Diana还说她对子元素的顺序有一些问题。在android.intent.category.Default之前,您可能需要android.intent.category.BROWSEABLE。我不希望我的url是anton://www.....com,我想将隐式意图转发给我的应用程序。它现在不是anton,因为您已更改了以下意图筛选器子元素:并且您的链接是
code
,我认为应该是,我将制作一个测试类并检查它。您所建议的是另一种方法。它的工作原理与“意图:”方法几乎相同。尝试从这个浏览器中使用你的方法我相信这就是你想要的,这是一种使用scheme的方法,但正如Diane(我的导师)所说,“我们强烈劝阻人们不要使用他们自己的scheme,除非他们正在定义一个新的全球互联网方案。”我想使用intent:。。。。
        if (url.startsWith("mailto:")) {
            String[] blah_email = url.split(":");
            Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
            emailIntent.setType("text/plain");
            emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{blah_email[1]});
            emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, what_ever_you_want_the_subject_to_be)");
            Log.v("NOTICE", "Sending Email to: " + blah_email[1] + " with subject: " + what_ever_you_want_the_subject_to_be);
            startActivity(emailIntent);
        }