2012-01-17 66 views
3

我想播放录制的视频文件在android的mediaplayer中播放。我想通过intent调用媒体播放器,并想播放传递的uri的相应文件。当我正在尝试我得到一个异常ActivityNotFound谁能帮我一个代码。在android中播放文件mediaplayer

@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例外

+0

可以请你过去的代码的代码? – 2012-01-17 13:06:04

回答

4

中,你得到一个ActivityNotFound例外是当您试图启动您已经创建了一个活动没有在清单申报其最常见的场景。

发布您用来启动活动的代码。如果你正在尝试使用应该由框架从应用程序中提供外部的活动,你可能只是建立意向书公布后的代码错误

更新...

你的代码似乎要使用意图动作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类型为“视频/ *”来setDataAndType,你是更具体的您的要求的系统。

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

queryIntentActivities

+0

Iam使用mediaplayer什么权限我应该在清单文件中给。 – 2012-01-18 03:41:28

+0

您不需要在清单中指定播放媒体文件的权限。 – Rich 2012-01-18 11:23:53

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); 

这是帮我

相关问题