1

在我的应用程序中,我正在创建一个视频并将其存储在 sdcard 中。我想分享那个视频。在任何模式下作为用户的选择。我尝试了一些这样的样本。但我不知道确切的方法。请帮我。

 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"));
        }
    });

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

4

2 回答 2

2

首先,使用真正的 MIME 类型(不是通配符)。

其次,使用您希望共享的视频的实际路径(而不是不正确的硬编码目录路径)。

第三,使用在一次调用setDataAndType()中设置Uri和MIME类型,因为我相信setData()会清除之前设置的MIME类型。

于 2013-11-09T13:45:07.153 回答
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);
        }
    }
于 2015-10-14T09:27:20.533 回答