开放意向分享

Opening intent on Sharing

我想分享一个 link,这样当其他用户点击那个 link 时,它会打开我的应用程序,其中包含一些我可以处理的 Intent 数据。

 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 意图?

How can I get back the important stuff I sent on the intent?

你不知道。

虽然我们当然欢迎您在 Intents 上添加随机附加功能,但不要指望其他应用程序对它们做任何事情。特别是,the ACTION_SEND documentation 中没有任何内容要求 ACTION_SEND 的实施者对随机额外内容做任何事情,更不用说以某种方式将它们还给你了。

同样,虽然欢迎您发明新的 HTTP headers,但不要求 Web 服务器注意它们,更不用说将它们作为响应发送回给您了。

相反,将 xyz.com/blah 替换为 xyz.com/important/stuff(或可能 xyz.com/blah?important=stuff),并从用于启动 activity 的 Uri 中获取数据.您通过 activity 的 onCreate() 方法中的 getIntent().getData() 获得此 Uri(或者可能 Intent 上的 getData() 传递给 onNewIntent(),取决于您的清单设置以及此 activity 的现有实例是否已存在)。