2013-09-27 11 views
7

現在、私のアプリでは、ユーザーが特定のURIをクリックしたときに検出する独自のURIスキームがあります。 Manifestファイルで使用AndroidでカスタムURLスキームのデータを受信する

コードは以下の通りです:

<intent-filter> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="http" android:host="com.test/> 
      <action android:name="android.intent.action.VIEW" /> 
    </intent-filter> 

ユーザーがブラウザで私のカスタムURIを持っているリンクをクリックした場合、それは今、私のアプリを選択するユーザーのためのオプションをポップアップします。

しかし、後で処理するために起動したときに、このデータをアプリケーションに渡すにはどうすればよいですか?基本的に私はブラウザからアプリケーションにデータを渡すのですか?アドバンス

+0

なぜandroid.intent.action.VIEWを2回設定しますか? – portfoliobuilder

+0

@portfoliobuilder一度は、2度書き込んだ場合にエラーを投げなかったはずです。 – aandroidtest

答えて

9

おかげで、クリックしたURLは、以下の方法を使用してデータを取得することができhttp://twitter.com/status/1234 であると仮定します。

// http://twitter.com/status/1234 
    Uri data = getIntent().getData(); 
    Log.d(TAG, data.toString()); 
    String scheme = data.getScheme(); // "http" 
    Log.d(TAG, scheme); 
    String host = data.getHost(); // "twitter.com" 
    Log.d(TAG, host); 
    String inurl = data.toString(); 
    List<String> params = data.getPathSegments(); 
    String first = params.get(0); // "status" 
    String second = params.get(1); // "1234" 
+0

ありがとう!それは完全に動作します。 – aandroidtest

+0

喜んで助けました! –

+0

私は常にパスでnullを取得します:(しかし、データは正しく、nullではありません。 – djdance