2016-07-12 51 views
2

例えば、URI 例があります:?アプリケーションを開くとAndroidでディープリンクURLを開くにはどうすればよいですか?

adb shell am start -W -a android.intent.action.VIEW -d "example://activityone?foo=bar" com.example.deeplinking 

このadbのコマンドによって活動のいずれかを起動することができます=バー // activityone fooが起動するため、他の方法があります。このuriを介してアンドロイドアプリ(例:// activityone?foo = bar)?このuriを電子メールに入れるにはどうすればいいですか?クリックするとアプリが起動しますか?

+0

'' link

+0

これは、電子メールの互換性のために電子メール –

+0

に埋め込まれたときに、仕事本物のディープリンクやクロムインテントを使用していません:https://developer.chrome.com/multidevice/android/intents –

答えて

1

非標準のURLスキーム(これはexample://)は必ずしもリンクとして扱われません。あなたの最善の選択肢は、アプリが認識できるリンク(URL:http://またはhttps://)に何らかの形でそのURLをラップして、後で何らかの自動リダイレクトを使用して後でアプリケーションを開いて世話をすることです。これは、リンクがどこに開かれていてもアプリケーションが常に起動するようにするためのものです。

5

まず、このドキュメントを読む必要があります。Intents and Intent Filters。具体的には、「暗黙インテントの受信」のセクションを参照してください。

他にも述べたように、カスタムスキームを使用すると問題が発生します。あなたは、ドメイン名(ホスト)を所有するよう

  • は、あなたがそれらを所有していないリンクとして

    • 彼らはいつも扱われません。

    つまり、あなたのホストのためのインテントフィルタを持つマニフェストあなたの活動を定義し、実際のスキームを使用する必要があります。具体的なユースケースに合わせて設定する方法については、Intent & Intent Filtersのドキュメントの「アクションテスト」、「カテゴリテスト」、および「データテスト」のセクションを参照してください。

    <activity android:name="com.example.app.ActivityOne"> 
        <intent-filter> 
         <data android:scheme="http"/> 
         <data android:host="example.com"/> 
         <data android:path="/activityone"/> 
         <action android:name="android.intent.action.VIEW"/> 
         <category android:name="android.intent.category.DEFAULT"/> 
         <category android:name="android.intent.category.BROWSABLE"/> 
        </intent-filter> 
    </activity> 
    

    次に、次のようなリンクを使用できます。

    http://example.com/activityone?foo=bar 
    

    これはhttpリンクであるため、システムはユーザーにアプリケーションを開くか、好みのブラウザを使用するかを選択するように求めます。彼らがあなたのアプリを選択した場合、ActivityOneが起動します。このようにしてクエリデータを取得できます。あなたはインテントフィルタにカスタムスキームを使用する場合は

    public class ActivityOne extends Activity { 
    
        @Override 
        public void onResume() { 
         super.onResume(); 
         Intent intent = getIntent(); 
         Uri uri = intent.getData(); 
         String foo = uri.getQueryParameter("foo"); 
        } 
    
    } 
    

    は、あなたは(ほとんどの場合)その意図を処理するために登録だけのアプリになり、ユーザーがあなたのアプリを選択する必要はありません。ただし、カスタムスキームのリンクを電子メールに含めることははるかに難しくなります。ほとんどの電子メールクライアントはカスタムスキームをリンクとして認識できず、クリックできません。

  • +0

    このuriを電子メールに入れるにはどうすればいいですか?クリックするとアプリが起動しますか? –

    +0

    リンクをクリックするだけで回答が更新されました。クリックすると、アプリ選択/起動プロセスに関する詳細情報が表示されます。テストする電子メールであなた自身に送ることができます。 – mpkuth

    +0

    gmail(そして多分他のメールクライアント)を使用しているなら、あなたは 'http://example.com/activityone?foo = bar'はリンクとして扱われ、プレーンテキストではありません。テキストを強調表示し、ツールバーの[リンクの挿入]を送信ボタンでクリックします。 – mpkuth

    関連する問題