我正在构建一个允许人们互相分享应用的应用。我已经能够从这个应用程序内部执行此操作(我显示已安装的应用程序,用户可以选择他想要发送的那些),但现在我想分享未安装的apks,所以apk就在下载文件夹或类似的东西。
想象一下,你在下载文件夹中有一个apk,我希望能够通过按Share,进入我的应用程序并发送该apk。它就像任何其他共享(图像等)。
我能够让我的应用程序弹出可以共享该类型文件的应用程序列表(在本例中为.apk),就像在这张图片(下图)中一样,将其添加到我的清单中活动标签:
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/vnd.android.package-archive" />
</intent-filter>
现在的问题是:
1 - 如何知道该人按下的文件的文件路径?
2 - 如果在清单上收到意图,如何将该文件路径传递给我的应用程序?
PS:请注意,目标是通过按分享来共享设备上任何文件夹中的apk(长按然后共享 - 取决于设备)。
提前感谢所有帮助。
答案 0 :(得分:1)
您必须在某些活动上添加了intent过滤器。该活动将接收您可以使用Intent intent = getIntent()
方法访问的意图。 See this doc。这回答了第2部分。
对于第一部分,我认为你可以做intent.getData().getPath()
答案 1 :(得分:0)
这是我点击shareContentProvider时共享数据的代码 我用它分享图像和文字
Uri imageUri;
Intent intent;
imageUri = Uri.parse("android.resource://" + getPackageName() + "/drawable/" + "icon");
intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "#periodicTable");
intent.putExtra(Intent.EXTRA_STREAM, imageUri);
intent.setType("image/*");
startActivity(intent);
答案 2 :(得分:0)
很抱歉回答我自己的问题,但也许这将有助于将来的某些人。
我正在调试并查看附加内容,如果有什么,没有任何显示。
解决方案正在执行(ArrayList<Uri>) getIntent().getExtras().get("android.intent.extra.STREAM");
,这将从意图中“刷新”Extras。我不知道为什么这些额外的东西最初没有出现,只有在得到额外的流之后,它才有效。
我使用了arraylist of uri's
,因为在这种情况下我尝试使用send_multiple
。如果您仅使用SEND
,那么您不需要ArrayList
部分。