在我的应用程序中,我正在制作视频并将其存储在SD卡中。我想分享那个视频。在任何模式下作为用户的选择。我试过这样的样本。但我不知道具体的方法。请帮帮我。
share.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("video/*");
intent.setData(Uri.parse("file://"+"/mnt/sdcard/path"));
startActivity(Intent.createChooser(intent,"Share via"));
}
});
但在选择器中它并没有显示任何应用程序。以正确的方式帮助我。
答案 0 :(得分:2)
首先,使用真实的MIME类型(不是通配符)。
其次,使用您希望共享的视频的实际路径(而不是指向目录的硬编码路径)。
第三,使用setDataAndType()
在一次调用中设置Uri
和MIME类型,因为我相信setData()
将消除以前设置的MIME类型。
答案 1 :(得分:0)
事实证明(至少在Android 5.1+上)你需要为Uri提供内容路径。以下是如何从文件路径创建内容路径(我保存到公共视频目录)
public static Uri getVideoContentUri(Context context, String filePath )//File imageFile)
{
//String filePath = imageFile.getAbsolutePath();
Cursor cursor = context.getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Video.Media._ID }, MediaStore.Video.Media.DATA + "=? ",
new String[] { filePath }, null);
if (cursor != null && cursor.moveToFirst())
{
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
Uri baseUri = Uri.parse("content://media/external/videos/media");
return Uri.withAppendedPath(baseUri, "" + id);
}
else
{
ContentValues values = new ContentValues();
values.put(MediaStore.Video.Media.DATA, filePath);
return context.getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
}
}