2012-11-12 1 views
3

Android 4.1까지는 경험하지 못한 비디오 Intents에 이상한 오류가 발생합니다.비디오와 관련된 이상한 오류 젤리에 대한 의도

다음은 내 코드 Intent입니다. 나는 비디오/mp4을 포함하여 다른 MIME 유형을 시도했지만, 공식 Android 개발자 사이트 Intents and Intent filters에 따르면 와일드 카드 (* video/**)는 정상적으로 작동한다고 가정합니다. 가 더 설치된 응용 프로그램이 Intent을 처리 할 수 ​​없습니다 말했다 때문에 내 장치에

Intent videoIntent = new Intent(); 
videoIntent.setAction(Intent.ACTION_VIEW); 
videoIntent.setData(Uri.parse(fileUrl)); 
videoIntent.setType("video/*"); 

startActivity(videoIntent); 

모두 실행하는 Android 4.1,이, ActivityNotFoundException 발생합니다. 이것은 이전 버전의 Android에서 모두 작동하고 있기 때문에 이상합니다. 기본 동영상 플레이어에서 실행해야합니다.

많은 타사 동영상 플레이어가 Intent을 처리 할 수 ​​있으므로 더 이상 기본 동영상 플레이어와 호환되지 않는 이유가 궁금합니다.

아이디어가 있으십니까?

Video player not working on Jelly Bean device :android.content.ActivityNotFoundException

답변

4

내가 다른 사람의 도움의 비트와 함께 해결책을 찾기 위해 관리 :

이 같은 문제가 될 것으로 보인다. setType() 호출이 setData() 호출을 포함하여 이전에 첨부 된 데이터를 지우는 것 같습니다. 설명서에 따라 :

이 메서드는 이전에 설정된 데이터를 모두 지 웁니다 (setData (Uri)로 예제).

대신 setDataAndType()으로 변경하면 효과적입니다.

public static Intent getVideoIntent(String fileUrl) { 
    Intent videoIntent = new Intent(Intent.ACTION_VIEW); 
    videoIntent.setDataAndType(Uri.fromFile(new File(fileUrl)), getMimeType(fileUrl)); 

    return videoIntent; 
} 

public static String getMimeType(String url) { 
    String type = null; 
    String extension = MimeTypeMap.getFileExtensionFromUrl(url); 

    if (extension != null) { 
     MimeTypeMap mime = MimeTypeMap.getSingleton(); 
     type = mime.getMimeTypeFromExtension(extension); 

     if (TextUtils.isEmpty(type)) 
      type = "video/*"; // No MIME type found, so use the video wildcard 
    } 

    return type; 
} 
:

:-) 다행히도, 결국 젤리 빈에 문제가 아니었다 여기에 비디오 의도를 만들기위한 최종 코드가 있다고 표시