Отображение массива в интерфейсный объект

После того, как 4.1 андроид изменил механизм пути sd-карты. теперь я могу загрузить видео, получив uri через идентификатор видеофайла. здесь мой код

public static String getVideoContentUriFromFilePath(Context ctx, String filePath) {

      ContentResolver contentResolver = ctx.getContentResolver();
      String videoUriStr = null;
         long videoId = -1;
         Log.d("first log","Loading file " + filePath);

         // This returns us content://media/external/videos/media (or something like that)
         // I pass in "external" because that's the MediaStore's name for the external
         // storage on my device (the other possibility is "internal")
         Uri videosUri = MediaStore.Video.Media.getContentUri("external");

         Log.d("second log","videosUri = " + videosUri.toString());

         String[] projection = {MediaStore.Video.VideoColumns._ID};

         // TODO This will break if we have no matching item in the MediaStore.
         Cursor cursor = contentResolver.query(videosUri, projection, MediaStore.Video.VideoColumns.DATA + " LIKE ?", new String[] { filePath }, null);
         cursor.moveToFirst();

         int columnIndex = cursor.getColumnIndex(projection[0]);
         videoId = cursor.getLong(columnIndex);

         Log.d("third log","Video ID is " + videoId);
         cursor.close();
         if (videoId != -1 ) videoUriStr = videosUri.toString() + "/" + videoId;
         return videoUriStr;
     }

и при нажатии кнопки загрузки используйте этот метод -

public void shareVideo(View view){
    new Handler().post(new Runnable() {

        @Override
        public void run() {
String newPath=getVideoContentUriFromFilePath(ShareVideoActivity.this, videoPath);
Intent intent = new Intent(Intent.ACTION_SEND);
                     intent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Title");
                //intent.setAction(Intent.ACTION_SEND);
                intent.setType("video/mp4");
                intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(newPath));
                try {
                startActivity(Intent.createChooser(intent,"Upload video via:"));
                } catch (android.content.ActivityNotFoundException ex) {

                }
    }
        }
    });

}
1
задан C.Programming 16 January 2019 в 20:12
поделиться

1 ответ

Вы не вернетесь или не прерветесь после первоначального случая, поэтому ваш случай по умолчанию всегда запущен.

Добавить оператор break; в конце первого случая.

0
ответ дан Chase 16 January 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: