2013-11-09 4 views
1

В моем приложении я создаю видео и сохраняю его в 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

Во-первых, используйте настоящий MIME-тип (не шаблон).

Во-вторых, используйте фактический путь к видео, которое вы хотите использовать (а не к некорректно жестко заданному пути к каталогу).

В-третьих, используйте setDataAndType(), чтобы установить тип Uri и MIME в одном вызове, как я считаю, setData() будет уничтожить ранее установленный тип MIME.

+0

что тип MIME здесь и то, что его влияние, если мы не set.shall я знаю ?? –

+0

@kalyanpvs: «какой тип MIME здесь» - это зависит от видео, которое вы делитесь. «каково его влияние, если мы не устанавливаем» - «ACTION_SEND» может не найти доступных способов обмена видео. – CommonsWare

+0

sir С помощью метода intent.setType() мы уже установили тип. Затем нам нужно будет снова установить данные и тип для намерения .. или одного достаточно? Или setType() отличается от setDataAndType() ?? –

0

Получается, что (по крайней мере, на Android 5.1+) вам необходимо предоставить Uri пути контента. Вот как создать путь контента из FilePath (что я сохраняю в каталог публичного видео)

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); 
     } 
    } 
Смежные вопросы