如何监听自定义 URI

发布于 2024-09-14 18:54:04 字数 554 浏览 3 评论 0原文

我正在开发一个有自己的 URI 前缀的应用程序。 (在本例中为 dchub://)

搜索并阅读了很多内容,但我有点困惑。

当有人在浏览器中单击以 dchub:// 开头的链接时,是否可以启动我的应用程序?

到目前为止,找到了很多从应用程序打开浏览器的其他示例,但这不是我想要的。

更新

非常感谢,我已经想到了,现在我有点陷入下一部分。

Uri data = getIntent().getData(); 
if (data.equals(null)) { } else { 
    String scheme = data.getScheme(); 
    String host = data.getHost(); 
    int port = data.getPort(); 
}

如果我正常启动应用程序,我会遇到一些 nullpointerexceptions,如果我从网页打开,它工作正常。所以我想让我们对空值进行一些检查,但这并没有解决问题。有什么建议我可以通过选择它来启动该应用程序吗?

I am working on an application which has its own URI prefix. (dchub:// in this case)

Searching all over and read a lot but I got a bit confused.

Is it possible to start my application when someone clicks on a link starting with dchub:// in the browser?

So far found a lot of examples the other way around opening the browser from your app but that's not what I'm looking for.

Update

Thanks a lot, I've figured that, now I'm a bit stuck in the next part.

Uri data = getIntent().getData(); 
if (data.equals(null)) { } else { 
    String scheme = data.getScheme(); 
    String host = data.getHost(); 
    int port = data.getPort(); 
}

I got some nullpointerexceptions if I start the app normally, it works fine if I open from the webpage. So I thought lets include some check for nullvalue but that didn't solve it. any suggestions how I can start the app just by selecting it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅语花开 2024-09-21 18:54:04

要在 Android 应用程序中注册协议,请向 AndroidManifest.xml 添加一个额外的块。

<manifest>
 <application>
   <activity>
           <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="dchub"/>
            </intent-filter>
   </activity>
 </application>
</manifest>

To register a protocol in your android app, add an extra block to the AndroidManifest.xml.

<manifest>
 <application>
   <activity>
           <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="dchub"/>
            </intent-filter>
   </activity>
 </application>
</manifest>
雨巷深深 2024-09-21 18:54:04

不要使用 data.equals(null)。这肯定会失败,你不能在空对象上调用方法,因此 NPE。

为什么是空代码块?在我看来,这要漂亮得多:

if(data != null){
    // code here
}

Don't use data.equals(null). That is bound to fail, you can't call methods on a null object, hence the NPE.

Why the emtpy code block? In my mind, this is a lot prettier:

if(data != null){
    // code here
}
苹果你个爱泡泡 2024-09-21 18:54:04

试试这个代码:

try {
    Uri data = getIntent().getData();
    if (data.equals(null)) { 
    } else { 
        String scheme = data.getScheme();
        String host = data.getHost();
        int port = data.getPort(); 
        //type what u want
        tv.setText("any thing");
     }      
} catch (NullPointerException e) {
      // TODO: handle exception
  tv.setText("Null");
}

Try this code:

try {
    Uri data = getIntent().getData();
    if (data.equals(null)) { 
    } else { 
        String scheme = data.getScheme();
        String host = data.getHost();
        int port = data.getPort(); 
        //type what u want
        tv.setText("any thing");
     }      
} catch (NullPointerException e) {
      // TODO: handle exception
  tv.setText("Null");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文