Can't play video in videoview from listview
Can't play video in videoview from listview
I can't manage to play a video on videoview from a listview on the same layout.
When clicking on listview item it displays a message "Can't play this video".
I have taken the READ_EXTERNAL_PERMISSION in Manifest.
All my videos in my phone are displayed on listview but the video won't play.
if(ContextCompat.checkSelfPermission(A1.this,
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
if (ActivityCompat.shouldShowRequestPermissionRationale(A1.this,
Manifest.permission.READ_EXTERNAL_STORAGE))
ActivityCompat.requestPermissions(A1.this,
new StringManifest.permission.READ_EXTERNAL_STORAGE,MY_PERMISSION_REQUEST);
else
ActivityCompat.requestPermissions(A1.this,
new StringManifest.permission.READ_EXTERNAL_STORAGE,MY_PERMISSION_REQUEST);
else
doStuff();
}
public void doStuff()
arrayList = new ArrayList<>();
getVideo();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
String myUrl = adapter.getItem(position);
Uri uri = Uri.parse(myUrl);
videoView1.setVideoURI(uri);
videoView1.start();
);
public void getVideo()
ContentResolver contentResolver = getContentResolver();
Uri videoUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
Cursor videoCursor = contentResolver.query(videoUri,null,null,null,null);
if(videoCursor != null && videoCursor.moveToFirst())
int songTitle = videoCursor.getColumnIndex(MediaStore.Video.Media.TITLE);
int songAlbum = videoCursor.getColumnIndex(MediaStore.Video.Media.ALBUM);
do
String currentTitle = videoCursor.getString(songTitle);
String currentAlbum = videoCursor.getString(songAlbum);
arrayList.add(currentTitle + "n" + currentAlbum);
while(videoCursor.moveToNext());
@Override
public void onRequestPermissionsResult(int requestCode, String permissions, int grantResults)
switch (requestCode)
case MY_PERMISSION_REQUEST:
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
if(ContextCompat.checkSelfPermission(A1.this,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
Toast.makeText(A1.this, "Permission Granted" , Toast.LENGTH_SHORT).show();
doStuff();
else
Toast.makeText(A1.this, "No Permission granted" , Toast.LENGTH_SHORT).show();
finish();
return;
}
Look at this stackoverflow.com/questions/3401579/…
– Krishna Sharma
Aug 28 at 20:24
@KrishnaSharma I changed
arrayList.add(currentTitle + "n" + currentAlbum); to arrayList.add(currentTitle); and it works fine, the video mow plays perfectly. Thank You– Kumar Shivam Ray
Aug 29 at 15:55
arrayList.add(currentTitle + "n" + currentAlbum);
arrayList.add(currentTitle);
Great !! glad to know that worked. Lets close this question then. Posting as an answer you may accept.
– Krishna Sharma
Aug 29 at 16:01
1 Answer
1
This was the my code
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_a1);
listView1 = findViewById(R.id.lv1);
videoView1 = findViewById(R.id.vv1);
mediaController = new MediaController(A1.this);
if (ContextCompat.checkSelfPermission(A1.this,
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
if (ActivityCompat.shouldShowRequestPermissionRationale(A1.this,
Manifest.permission.READ_EXTERNAL_STORAGE))
ActivityCompat.requestPermissions(A1.this,
new StringManifest.permission.READ_EXTERNAL_STORAGE, MY_PERMISSION_REQUEST);
else
ActivityCompat.requestPermissions(A1.this,
new StringManifest.permission.READ_EXTERNAL_STORAGE, MY_PERMISSION_REQUEST);
else
doStuff();
@Override
public void onRequestPermissionsResult(int requestCode, String permissions, int grantResults)
switch (requestCode)
case MY_PERMISSION_REQUEST:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
if (ContextCompat.checkSelfPermission(A1.this,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
Toast.makeText(A1.this, "Permission Granted", Toast.LENGTH_SHORT).show();
doStuff();
else
Toast.makeText(A1.this, "No Permission granted", Toast.LENGTH_SHORT).show();
finish();
public void doStuff()
arrayList = new ArrayList<>();
ContentResolver contentResolver = getContentResolver();
Uri videoUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
final Cursor videoCursor = contentResolver.query(videoUri, null, null, null, null);
if (videoCursor != null && videoCursor.moveToFirst())
int songTitle = videoCursor.getColumnIndex(MediaStore.Video.Media.TITLE);
do
String currentTitle = videoCursor.getString(songTitle);
arrayList.add(currentTitle);
while (videoCursor.moveToNext());
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
listView1.setAdapter(adapter);
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener()
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
System.gc();
video_column_index = videoCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
videoCursor.moveToPosition(position);
String filename = videoCursor.getString(video_column_index);
videoView1.setVideoPath(filename);
videoView1.setMediaController(new MediaController(A1.this));
videoView1.requestFocus();
videoView1.start();
);
}
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
in your adapter, you don't have valid uri arrayList.add(currentTitle + "n" + currentAlbum); this is not the valid url.
– Krishna Sharma
Aug 28 at 20:17