打开共享

时间:2017-02-08 00:39:44

标签: android share

我想分享一个链接,以便当其他用户点击该链接时,它会打开我的应用程序,其中包含一些我可以处理的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意图?

1 个答案:

答案 0 :(得分:2)

  

如何才能收回我发送给意图的重要内容?

你没有。

虽然欢迎您在Intents上添加随机内容,但不要指望其他应用可以对它们执行任何操作。特别是the ACTION_SEND documentation中没有任何内容要求ACTION_SEND的实施者对随机附加内容做任何事情,更不用说以某种方式将它们发回给你了。

同样,虽然欢迎您发明新的HTTP标头,但并不要求Web服务器关注它们,更不用说在响应中将它们发回给您。

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