从我的Android应用程序分享视频

时间:2013-11-09 13:38:12

标签: android android-intent

在我的应用程序中,我正在制作视频并将其存储在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"));
        }
    });

但在选择器中它并没有显示任何应用程序。以正确的方式帮助我。

2 个答案:

答案 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);
        }
    }