我想播放一个记录在android的媒体播放器中播放的视频文件.我想通过意图调用媒体播放器并想播放传递的uri的相应文件.当我尝试时我得到一个异常ActivityNotFound可以任何人都帮我一个代码.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_VIDEO_CAPTURED) {
uriVideo = data.getData();
Toast.makeText(VedioRecording.this, uriVideo.getPath(),
Toast.LENGTH_LONG).show();
}
} else if (resultCode == RESULT_CANCELED) {
uriVideo = null;
Toast.makeText(VedioRecording.this, "Cancelled!", Toast.LENGTH_LONG)
.show();
}
if (requestCode == 2) {
selectedImageUri = data.getData();
// OI FILE Manager
filemanagerstring = selectedImageUri.getPath();
// MEDIA GALLERY
selectedImagePath = getPath(selectedImageUri);
Intent intent1 = new Intent(android.provider.MediaStore.INTENT_ACTION_MUSIC_PLAYER).setData(selectedImageUri);
startActivityForResult(intent1, 3);
// videoviewPlay.setVideoURI(selectedImageUri);
// videoviewPlay.start();
}
if (requestCode == 3) {
}
}
private String getPath(Uri uri) {
String[] projection = { MediaStore.Video.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
if (cursor != null) {
// HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
// THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} else {
return null;
}
}
}
这是我的代码我正在调整activitynotfound异常
解决方法:
获得ActivityNotFound异常的最常见方案是,当您尝试启动已创建的活动而不在清单中声明它时.
发布用于启动活动的代码以确定.如果您尝试使用应用程序外部框架提供的活动,您可能只是错误地设置了Intent
代码发布后更新…
您的代码似乎正在使用意图操作INTENT_ACTION_MUSIC_PLAYER并将图像URL作为数据传递(它是图像的路径还是您的变量名称错误?).您得到一个ActivityNotFoundException,因为系统没有注册任何意图接收器来处理该场景.此外,如果您查看此常量的文档,您会看到它们在某些时候标记为已弃用:
http://developer.android.com/reference/android/provider/MediaStore.html#INTENT_ACTION_MUSIC_PLAYER
我通常会使用Intent.ACTION_VIEW并将mime类型与数据一起传递.像下面这样的东西……
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(pathToVideoFile), "video/*");
startActivity(intent);
通过将mime类型的“video / *”传递给setDataAndType,您对系统的请求更加具体.
如果要查询系统以查明是否可以处理Intent(意味着运行代码的用户设备已注册可以处理Intent的Activity),则可以使用PackageManager.queryIntentActivities方法: