3

我想播放录制的视频文件要在android的mediaplayer中播放。我想通过intent调用媒体播放器并想播放传递的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 异常

4

2 回答 2

4

获得 ActivityNotFound 异常的最常见情况是,当您尝试启动已创建的 Activity 而未在清单中声明它时。

发布您用于启动活动的代码以确保。如果您尝试使用应由框架在应用程序外部提供的活动,则您可能只是错误地设置了 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);

通过将“video/*”的 mime 类型传递给 setDataAndType,您对系统的请求更加具体。

如果您想查询系统以了解是否可以处理 Intent(意味着运行您的代码的用户设备注册了可以处理该 Intent 的 Activity),您可以使用 PackageManager.queryIntentActivities 方法:

查询意图活动

于 2012-01-17T13:09:52.463 回答
1
String extension = MimeTypeMap
                        .getFileExtensionFromUrl(selectedImagePath);
                String mimeType = MimeTypeMap.getSingleton()
                        .getMimeTypeFromExtension(extension);
                Intent mediaIntent = new Intent(Intent.ACTION_VIEW);
                mediaIntent.setDataAndType(Uri.parse(selectedImagePath),
                        mimeType);
                startActivity(mediaIntent);

这是帮助我的代码

于 2012-01-18T12:07:37.970 回答