2012-01-17 65 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); 

這是幫我

相關問題