Ich habe meine Videodatei in meinem Speicher gespeichert und versucht, das Video von meiner App mit Intent zu spielen .. Auf anderen Spielern diese Datei spielt gut, aber wenn ich versuchte, diese Datei abzuspielen mit VLC gibt es mir folgenden Fehler;VLC: Cant Play Video von getExternalStorageDirectory()
Wiedergabefehler Vlc hat bei diesem Medium einen Fehler festgestellt. Bitte versuchen Sie , um die Medienbibliothek zu aktualisieren.
Und
Die Lage /storage/emulated/0/myFolder/file.mov nicht abgespielt werden kann.
Saving Methode
private String SaveToDir(String DownloadUrl) {
try {
File dir = new File(Environment
.getExternalStorageDirectory(),
"myFolder");
if (dir.exists() == false) {
dir.mkdirs();
}
URL url = new URL(DownloadUrl);
String fileName = DownloadUrl.substring(DownloadUrl.lastIndexOf('/') + 1);
File file = new File(dir, fileName);
if (file.exists()) {
return file.getAbsolutePath();
} else {
long startTime = System.currentTimeMillis();
Log.d("DownloadManager", "download url:" + url);
Log.d("DownloadManager", "download file name:" + fileName);
URLConnection uconn = url.openConnection();
uconn.setReadTimeout(TIMEOUT_CONNECTION);
uconn.setConnectTimeout(TIMEOUT_SOCKET);
InputStream is = uconn.getInputStream();
BufferedInputStream bufferinstream = new BufferedInputStream(is);
BufferedOutputStream outStream = null;
outStream = new BufferedOutputStream(new FileOutputStream(file));
byte[] buf = new byte[5000];
int len;
while ((len = bufferinstream.read(buf)) > 0) {
outStream.write(buf, 0, len);
}
outStream.flush();
outStream.close();
makeFileAvailable(file);
Log.d("DownloadManager", "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + "sec");
int dotindex = fileName.lastIndexOf('.');
if (dotindex >= 0) {
fileName = fileName.substring(0, dotindex);
}
return file.getAbsolutePath();
}
} catch (IOException e) {
Log.d("DownloadManager", "Error:" + e);
e.printStackTrace();
return "";
}
}
Intent
String responselink = SaveToDir(getImgUrl());
String type = FileUtils.getMimeType(responselink);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(responselink));
intent.setDataAndType(Uri.parse(responselink), type);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
generalPropListener.getSelfContext().startActivity(intent);
Ja, es wird funktionieren, aber es könnte ein Problem mit Android 7.0 sein – Mysterious
Dann müssen Sie einen [FileProvider] (https://developer.android.com/reference/android/support/v4/content/FileProvider .html). Es ist langweilig, aber es ist nicht schwer. – cwbowron