Как прослушать пользовательский URI - PullRequest
12 голосов
/ 12 августа 2010

Я работаю над приложением, которое имеет собственный префикс 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 с, если я нормально запускаю приложение, оно работает нормально, если я открываю с веб-страницы.Так что я подумал, давайте включим некоторую проверку на нулевое значение, но это не решило проблему.какие-либо предложения, как я могу запустить приложение, просто выбрав его?

Ответы [ 3 ]

26 голосов
/ 12 августа 2010

Чтобы зарегистрировать протокол в вашем приложении для 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>
10 голосов
/ 04 сентября 2012

Не используйте data.equals (ноль).Это неизбежно, вы не можете вызывать методы для нулевого объекта, поэтому NPE.

Почему блок кода emtpy?На мой взгляд, это намного красивее:

if(data != null){
    // code here
}
0 голосов
/ 22 мая 2012

Попробуйте этот код:

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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...