2017-02-08 12 views
0

他のユーザーがそのリンクをクリックすると、私が処理できるいくつかのインテントデータで自分のアプリケーションを開くように、リンクを共有したいと思います。公開の意図

Intent i= new Intent(android.content.Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(android.content.Intent.EXTRA_SUBJECT,"Subject"); 
i.putExtra(android.content.Intent.EXTRA_TEXT, "xyz.com/blah"); 

i.putExtra("important stuff", "important stuff"); 

startActivity(Intent.createChooser(i, "Share via")); 

は、私はまた、マニフェストにこれを追加しました:

<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="http" /> 
    <data android:scheme="https" /> 
    <data android:host="xyz.com" /> 
</intent-filter> 

だから、共有テキストをクリックすることで、私のアプリを開きます。今私はimportant stuffに従って私のアプリで働きたい。ただし、それをクリックすると(たとえば、Whatsappから)、私は受け取ったインテントで次のように表示されます。

文字列名:キーでcom.android.browser.application_id

値:com.whatsapp

どうやって取り戻すことができ、私は意図に送らimportant stuff

+0

インテントエクストラはあなたの共有インテントと一緒に行かれ、そのインテントに応答しているアプリによって処理されます。ユーザーがあなたのリンクをクリックすると、それらの追加なしでまったく新しいインテントが作成されます。別のアプリケーションからリンクがクリックされた後にそのデータが必要な場合は、そのアプリケーションがそれらのエクストラを送信する必要があります(そうでないかもしれません)、またはURLに関連データを持っている必要があります( 'https://example.com/キー/値 ')例えば –

答えて

2

私がインテントで送信した重要なものを取り戻すにはどうすればよいですか?

あなたはありません。

Intentsにランダムなエクストラを追加することは間違いありませんが、他のアプリがそれらを使って何かをするとは思わないでください。特にthe ACTION_SEND documentationには、ACTION_SENDの実装者が何かをしてランダムなエクストラで何かをする必要はありません。

同様に、新しいHTTPヘッダーを作成することは歓迎しますが、Webサーバーが注意を払う必要はなく、レスポンスで返信する必要はありません。

代わりに、xyz.com/important/stuff(または多分xyz.com/blah?important=stuff)でxyz.com/blahを交換し、あなたの活動を開始するために使用Uriからデータを取得します。これはメソッドのからgetIntent().getData()(またはマニフェストの設定やこのアクティビティの既存のインスタンスが既に存在するかどうかによってonNewIntent()に渡されたのgetData())になります。

+0

ありがとう! 'getData'は私が探していたものでした。 –

関連する問題