如何监听自定义URI

Joh*_*han 12 android uri

我正在开发一个具有自己的URI前缀的应用程序.(dchub://在这种情况下)

搜遍了所有并阅读了很多,但我有点困惑.

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

到目前为止,发现了很多的例子otherway各地从您的应用中打开浏览器,但是那不是我要找的.

更新

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

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

nullpointerexception如果我正常启动应用程序,我会得到一些,如果我从网页打开它可以正常工作.所以我想包括一些检查nullvalue但是没有解决它.任何建议我如何才能通过选择它来启动应用程序?

Thi*_*Roy 26

要在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>
Run Code Online (Sandbox Code Playgroud)

  • 如果data为null"data.equals(null)"将导致nullpointer异常...检查if(data == null)而不是 (3认同)

Den*_*ger 10

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

为什么emtpy代码块?在我看来,这更漂亮:

if(data != null){
    // code here
}
Run Code Online (Sandbox Code Playgroud)