Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Android Новый топик    Ответить
 видео приложение не может видео играть файл, хотя расшарить его получается  [new]
u78
Member

Откуда: Москва
Сообщений: 559
Есть mp4 видео файл

Файл точно рабочий, им можно поделиться и потом проиграть.
Файл создаётся под FileProvider

Вот код для отправки в плеер
        File file = new File(filePath);
        Uri contentUri = FileProvider.getUriForFile(getApplicationContext(), "com.screencapture.reva.screencapture.fileprovider", file);
        grantUriPermission("com.screencapture.reva.screencapture.fileprovider", contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(contentUri, "video/mp4");
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(intent);

Я так понимаю пытается открыть видео проигрыватель а дальше я вижу сообщение:
В приложении "Видео" произошла ошибка

В чём может быть проблема?
Проект на github https://github.com/artemu78/ScreenVideoCapture
12 июл 17, 00:32    [20635300]     Ответить | Цитировать Сообщить модератору
 Re: видео приложение не может видео играть файл, хотя расшарить его получается  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23771
u78
В приложении "Видео" произошла ошибка

Наверное глупость спрошу, но в логах что?
Туда вообще всегда нужно первым делом смотреть.
12 июл 17, 09:00    [20635559]     Ответить | Цитировать Сообщить модератору
 Re: видео приложение не может видео играть файл, хотя расшарить его получается  [new]
u78
Member

Откуда: Москва
Сообщений: 559
wadman,

не глупость
что за логи? где смотреть?
12 июл 17, 09:01    [20635564]     Ответить | Цитировать Сообщить модератору
 Re: видео приложение не может видео играть файл, хотя расшарить его получается  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23771
Помимо того, что в отладке студия сама вываливает лог в одно из своих окошек, можно и внешним воспользоваться https://developer.android.com/studio/profile/monitor.html
12 июл 17, 09:13    [20635600]     Ответить | Цитировать Сообщить модератору
 Re: видео приложение не может видео играть файл, хотя расшарить его получается  [new]
u78
Member

Откуда: Москва
Сообщений: 559
Отвечу сам себе.
Код правильный и не работает только благодаря хитростям FileProvider.
Пришлось копировать сайт в публичную папку и оттуда открывать на просмотр:
            //copy file
            File srcFile = new File(filePath);
            File dstDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
            String newFile;
            try {
                newFile = copyFile(srcFile,dstDir);
            } catch (IOException e) {
                Log.e(TAG,e.getMessage());
                return;
            }


            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(newFile));
            intent.setDataAndType(Uri.parse(newFile), "video/mp4");
            //intent.setData(Uri.parse(filePath));
            //intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            startActivity(intent);


А вот функция копирования
    /**
     * Move source file to destination directory
     * @param fileSrc - source file
     * @param dirDst - destination directory
     * @throws IOException
     */
    private String copyFile(File fileSrc, File dirDst) throws IOException {
        File newFile = new File(dirDst, fileSrc.getName());
        FileChannel outputChannel = null;
        FileChannel inputChannel = null;
        try {
            outputChannel = new FileOutputStream(newFile).getChannel();
            inputChannel = new FileInputStream(fileSrc).getChannel();
            inputChannel.transferTo(0, inputChannel.size(), outputChannel);
            inputChannel.close();
            //fileSrc.delete();
        } finally {
            if (inputChannel != null) inputChannel.close();
            if (outputChannel != null) outputChannel.close();
        }
        return newFile.getAbsolutePath();
    }
13 июл 17, 17:39    [20641951]     Ответить | Цитировать Сообщить модератору
Все форумы / Android Ответить