2013-05-07 2 views
0

Nexus 7을 가지고 오디오 파일을 재생하면이 오류가 발생하고 강제 종료됩니다. 나는 하루 종일 해결책을 찾고 있었다. 여기에 관련 코드가있다 :Nexus 7 파일을 열지 못했습니다. 권한이 거부되었습니다.

protected void onListItemClick(ListView l, View v, int position, long id) { 
playSong(MEDIA_PATH + songs.get(position)); 
    textViewRecordPlaying.setText(songs.get(position)); 
} 

private void playSong(String songPath) { 
    final Intent i = new Intent(MusicService.ACTION_URL); 
    File file = new File(songPath); 
    Uri uri = Uri.fromFile(file); 
    i.setData(uri); 
    startService(i); 

    } 

playSong(MEDIA_PATH + songs.get(position)); 

MEDIA_PATH :

private static final String MEDIA_PATH = new String(Environment 
     .getExternalStorageDirectory().getPath() + "/AudioStreamRecorder/"); 

이 코드는 내 갤럭시 S3 내 썬더 볼트에 아름답게 작동하지만이 목록의 항목을 클릭 할 때 내가 넥서스 7 Failed to open file. Permission denied. 오류 및 Asus Transformer Prime TF201, 그 후 강제 종료.

동일한 오류로 Environment.getExternalStorageDirectory();Environment.getExternalStorageDirectory()getAbsolutePath();을 시도했습니다. 나는 이것이 NullPoingterException의 원인이되는 ... 나는 playSong 방법에서이 왼쪽

05-07 16:47:35.714: I/Streaming Radio Recorder Pro(4427): debug: Creating service 
05-07 16:47:35.724: I/MusicRetriever(4427): Querying media... 
05-07 16:47:35.724: I/MusicRetriever(4427): URI: content://media/external/audio/media 
05-07 16:47:35.724: I/Streaming Radio Recorder Pro(4427): Playing from URL/path: file:///storage/emulated/0/AudioStreamRecorder/The%20Dining%20Rooms%20-%20triste%2C%20solitario%20y%20final-3.54.44%20Tuesday%2C%20May%207%2C%202013.mp3 
05-07 16:47:35.724: I/AudioService(436): AudioFocus requestAudioFocus() from [email protected][email protected] 
05-07 16:47:35.724: I/AwesomePlayer(128): setDataSource_l(URL suppressed) 
05-07 16:47:35.724: I/MusicRetriever(4427): Query finished. Returned a cursor. 
05-07 16:47:35.724: I/MusicRetriever(4427): Listing... 
05-07 16:47:35.724: I/MusicRetriever(4427): Title column index: 8 
05-07 16:47:35.724: I/MusicRetriever(4427): ID column index: 8 
05-07 16:47:35.724: I/MusicRetriever(4427): ID: 21 Title: Join Hangout 
05-07 16:47:35.724: I/MusicRetriever(4427): ID: 2305 Title: The Dining Rooms - triste, solitario y final-3.54.44 Tuesday, May 7, 2013 
05-07 16:47:35.724: I/MusicRetriever(4427): Done querying media. MusicRetriever is ready. 
05-07 16:47:35.734: E/(128): Failed to open file '/storage/emulated/0/AudioStreamRecorder/The Dining Rooms - triste, solitario y final-3.54.44 Tuesday, May 7, 2013.mp3'. (Permission denied) 
05-07 16:47:35.734: E/MediaPlayer(4427): error (1, -2147483648) 
05-07 16:47:35.734: E/MediaPlayer(4427): Error (1,-2147483648) 
05-07 16:47:35.734: E/Streaming Radio Recorder Pro(4427): Error: what=1, extra=-2147483648 
05-07 16:47:35.764: I/AudioService(436): AudioFocus abandonAudioFocus() from [email protected][email protected] 
05-07 16:47:36.704: D/AndroidRuntime(4427): Shutting down VM 
05-07 16:47:36.704: W/dalvikvm(4427): threadid=1: thread exiting with uncaught exception (group=0x41f66930) 
05-07 16:47:36.714: E/AndroidRuntime(4427): FATAL EXCEPTION: main 
05-07 16:47:36.714: E/AndroidRuntime(4427): java.lang.NullPointerException 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at com.LudwigAppDesign.streamingradioplayerpro.Songs$8.run(Songs.java:407) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at android.os.Handler.handleCallback(Handler.java:725) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at android.os.Looper.loop(Looper.java:137) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at dalvik.system.NativeStart.main(Native Method) 
05-07 16:47:36.724: W/ActivityManager(436): Force finishing activity com.LudwigAppDesign.streamingradioplayerpro/.Songs 
05-07 16:47:36.784: D/dalvikvm(436): GC_FOR_ALLOC freed 3517K, 29% free 17724K/24840K, paused 57ms, total 57ms 
05-07 16:47:37.294: W/ActivityManager(436): Activity pause timeout for ActivityRecord{42c1cd18 u0 com.LudwigAppDesign.streamingradioplayerpro/.Songs} 
05-07 16:47:46.794: W/ActivityManager(436): Launch timeout has expired, giving up wake lock! 
05-07 16:47:47.304: W/ActivityManager(436): Activity idle timeout for ActivityRecord{42b7ced0 u0 com.LudwigAppDesign.streamingradioplayerpro/.Main} 
05-07 16:48:05.824: W/ThrottleService(436): unable to find stats for iface rmnet0 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 나는 아이디어가 부족했습니다 도와주세요 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 사람을 ... 선언 한?

Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     public void run() { 

      MusicService.mPlayer 
        .setOnCompletionListener(new OnCompletionListener() { 
         public void onCompletion(MediaPlayer arg0) { 
          nextSong(); 
         } 
        }); 
     } 
    }, 1000); 

} 

private void nextSong() { 
    if (++currentPosition >= songs.size()) {  
     currentPosition = 0; 
    } else { 
     // Play next song 
     playSong(MEDIA_PATH + songs.get(currentPosition)); 
     textViewRecordPlaying.setText(songs.get(currentPosition)); 
     SharedPreferences settings = getSharedPreferences(
       RECORDINGS_NOW_PLAYING, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString("nowPlayingTitle", (songs.get(currentPosition).toString().trim())); 
     // Commit the edits! 
     editor.commit(); 
    } 
} 

편집 --- 안녕하세요이 코드를 제거하고, NullPointerException가 사라 :

05-08 12:23:26.838: I/Streaming Radio Recorder Pro(2661): Playing from URL/path: file:///storage/emulated/0/AudioStreamRecorder/Goudron%20-%20Art%20School%20Fuckheads-5.55.51%20Tuesday%2C%20May%207%2C%202013.mp3 
05-08 12:23:26.838: I/AudioService(482): AudioFocus requestAudioFocus() from [email protected][email protected] 
05-08 12:23:26.848: I/AwesomePlayer(128): setDataSource_l(URL suppressed) 
05-08 12:23:26.848: I/MusicRetriever(2661): Querying media... 
05-08 12:23:26.858: I/MusicRetriever(2661): URI: content://media/external/audio/media 
05-08 12:23:26.858: E/(128): Failed to open file '/storage/emulated/0/AudioStreamRecorder/Goudron - Art School Fuckheads-5.55.51 Tuesday, May 7, 2013.mp3'. (Permission denied) 
05-08 12:23:26.858: E/MediaPlayer(2661): error (1, -2147483648) 
05-08 12:23:26.858: E/MediaPlayer(2661): Error (1,-2147483648) 
05-08 12:23:26.898: D/dalvikvm(584): GC_CONCURRENT freed 518K, 7% free 9075K/9736K, paused 3ms+3ms, total 32ms 
05-08 12:23:26.898: E/Streaming Radio Recorder Pro(2661): Error: what=1, extra=-2147483648 
05-08 12:23:26.928: I/AudioService(482): AudioFocus abandonAudioFocus() from [email protected][email protected] 
05-08 12:23:26.928: I/MusicRetriever(2661): Query finished. Returned a cursor. 
05-08 12:23:26.928: I/MusicRetriever(2661): Listing... 
05-08 12:23:26.928: I/MusicRetriever(2661): Title column index: 8 
05-08 12:23:26.928: I/MusicRetriever(2661): ID column index: 8 
05-08 12:23:26.928: I/MusicRetriever(2661): ID: 21 Title: Join Hangout 
05-08 12:23:26.928: I/MusicRetriever(2661): ID: 1553 Title: Goudron - Art School Fuckheads-5.55.51 Tuesday, May 7, 2013 
05-08 12:23:26.928: I/MusicRetriever(2661): ID: 1694 Title: Lusine Icl - Mod-10.47.59 Tuesday, May 7, 2013 
05-08 12:23:26.928: I/MusicRetriever(2661): Done querying media. MusicRetriever is ready. 

I :

이제
Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     public void run() { 

      MusicService.mPlayer 
        .setOnCompletionListener(new OnCompletionListener() { 
         public void onCompletion(MediaPlayer arg0) { 
          nextSong(); 
         } 
        }); 
     } 
    }, 1000); 

난 그냥 거부 권한의 원래 오류 남아 있어요 도움이되기를 바랍니다. 정보를 더 필요로하고 시험해 주셔서 감사드립니다.

+0

외부 저장 장치에 더미 txt 파일을 넣어 시도하고 당신이 코드에서 그것을 읽을 수 있는지로 전환 2 주 후에이 나타났습니다. 어쩌면 파일 경로를 사용자의 의도와 함께 전달하고 서비스 측에서 URI를 가져 오는 것도 좋습니다. 나는 그것이 왜 바뀌는 지 알지 못한다. – FoamyGuy

+0

문자열 연결을 사용하여 파일 경로를 생성하지 마십시오. 적절한'File' 생성자를 사용하십시오. 그 이상으로, 전체 스택 추적을 게시하십시오. – CommonsWare

+0

여기서 스택 추적을 올바르게 수행하려면 어떻게해야합니까? –

답변

1

Nexus 7 파일을 열지 못했습니다. 사용 권한이 거부되었습니다.

스택 추적이 나타내는 것은 아닙니다. 스택 추적에 오류가 있습니다 :

05-07 16:47:36.714: E/AndroidRuntime(4427): java.lang.NullPointerException 
05-07 16:47:36.714: E/AndroidRuntime(4427):  at com.LudwigAppDesign.streamingradioplayerpro.Songs$8.run(Songs.java:407) 

우리는 당신이 위에 열거 한 소스 코드의 run() 방법을 가지고 있지 않기 때문에, 추가 지원을하기는 어렵다.

+0

나는 목록 항목 click에'playSong' 메서드를 가지고있다. 나는 다른 것을 놓치고 있니? 또한, 여전히 실행을 시도한 이후에 Permission의 결과가 거부 된 NullPointerException이 아닌가? –

+0

@MikeLudwig : "나는 다른 것을 놓치고 있습니까?"- NullPointerException은 일부 익명의 내부 클래스에서'run()'메소드로부터 온 것입니다."또한 실행 권한이 거부 되었기 때문에 NullPointerException이 아닌가? 이 'run()'메소드가 무엇을하려고하는지 전혀 알지 못해서 대답하는 방법이 있습니다. – CommonsWare

+0

첫 번째 게시물에 수정 사항이 추가되었습니다. –

0

4.2 프로필이 추가되어 MediaPlayer가 제대로 처리되지 못하는 것으로 보입니다.

URL에 대한 FileDescriptor를 가져 와서 대신 재생하면 문제가 없어집니다. 내 SGSII에서 개발하고 내 넥서스 7

setDataSource(new FileInputStream(url).getFD());

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 제발 도와 주실 수 있다면 의도를 사용하여 어떻게해야합니까? 여기 내 코드가있다 :'final Intent i = new Intent (MusicService.ACTION_URL); \t 파일 file = 새 파일 (songPath); \t Uri uri = Uri.fromFile (file); \t i.setData (uri); \t startService (i);'이것은 '의도'없이 직접'MediaPlayer '를 사용하면 같은 파일을 재생할 수 있기 때문에 문제가있는 곳이어야합니다. –

+0

MusicService 내부의 무언가가 문제의 원인입니다. MusicService에서 uri를 어떻게 설정하고 있습니까? – Ruxton

관련 문제