我正在处理一个有自己的URI前缀的应用程序。 (dchub://在这种情况下)
全部搜索并阅读了很多,但我有点困惑。
当有人点击浏览器中以dchub://
开头的链接时,是否可以启动我的应用程序?
到目前为止,在你的应用程序中打开浏览器时发现了很多例子,但这不是我想要的。
非常感谢,我已经想到了,现在我有点陷入下一部分。
Uri data = getIntent().getData();
if (data.equals(null)) { } else {
String scheme = data.getScheme();
String host = data.getHost();
int port = data.getPort();
}
如果我正常启动应用程序,我会得到一些nullpointerexception
,如果我从网页打开它会正常工作。所以我想包括一些检查nullvalue但是没有解决它。任何建议我如何才能通过选择它来启动应用程序?
答案 0 :(得分: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>
答案 1 :(得分:10)
不要使用data.equals(null)。那肯定会失败,你不能在null对象上调用方法,因此就是NPE。
为什么emtpy代码块?在我看来,这更漂亮:
if(data != null){
// code here
}
答案 2 :(得分:-1)
试试这段代码:
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");
}