Android Nexus 7无法打开文件。拒绝许可

Android Nexus 7无法打开文件。拒绝许可,android,android-listview,nexus-7,Android,Android Listview,Nexus 7,刚拿到我的Nexus7,当我播放音频文件时,我得到了这个错误,然后强制关闭。我整天都在寻找解决办法。以下是相关代码: protected void onListItemClick(ListView l, View v, int position, long id) { playSong(MEDIA_PATH + songs.get(position)); textViewRecordPlaying.setText(songs.get(position)); } private void

刚拿到我的Nexus7,当我播放音频文件时,我得到了这个错误,然后强制关闭。我整天都在寻找解决办法。以下是相关代码:

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));
我的
媒体路径

private static final String MEDIA_PATH = new String(Environment
      .getExternalStorageDirectory().getPath() + "/AudioStreamRecorder/");
这段代码在我的Galaxy S3和Thunderbolt上运行得很好,但当我点击一个列表项时,
无法打开文件。权限被拒绝。
Nexus 7和Asus Transformer Prime TF201出现错误,然后强制关闭

我尝试了
Environment.getExternalStorageDirectory()
环境。getExternalStorageDirectory()getAbsolutePath()与相同的错误。我已声明
,并且
有人请帮忙,我已经没有主意了

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 android.media.AudioManager@42ffe928com.LudwigAppDesign.streamingradioplayerpro.AudioFocusHelper@42ffe2b8
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 android.media.AudioManager@42ffe928com.LudwigAppDesign.streamingradioplayerpro.AudioFocusHelper@42ffe2b8
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
我在
playSong
方法中遗漏了这一点……这是导致NullPoingterException的原因吗

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();
    }
}
编辑---Hi我删除了此代码,NullPointerException消失了:

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

            MusicService.mPlayer
                    .setOnCompletionListener(new OnCompletionListener() {
                        public void onCompletion(MediaPlayer arg0) {
                            nextSong();
                        }
                    });
        }
    }, 1000);
现在,我只剩下拒绝许可的原始错误:

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 android.media.AudioManager@41cfdfd0com.LudwigAppDesign.streamingradioplayerpro.AudioFocusHelper@41cfdaf8
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 android.media.AudioManager@41cfdfd0com.LudwigAppDesign.streamingradioplayerpro.AudioFocusHelper@41cfdaf8
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.
我希望这有帮助…如果你需要更多信息,请告诉我,谢谢你的尝试

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()
方法,因此很难为您提供进一步的帮助。

4.2添加了配置文件,而且MediaPlayer似乎从未更新以正确处理此问题

为您的URL获取一个FileDescriptor并播放它,问题应该会消失。在我的SGSII上开发了两周,然后切换到我的Nexus7之后,我注意到了这一点


setDataSource(新文件输入流(url).getFD());

尝试将一个虚拟txt文件放在外部存储器上,看看您是否能够从代码中读取它。也许还可以尝试按照您的意图传递文件路径,并在服务端获取uri。我不明白为什么这会改变任何事情,但尝试也无妨。永远不要使用字符串连接构造文件路径。请使用正确的
文件
构造函数。除此之外,请发布整个堆栈跟踪。如何在此处正确执行堆栈跟踪?我在列表项单击中有
playSong
方法。我还缺什么吗?另外,NullPointerException不是权限被拒绝的结果,因为它仍在尝试运行吗?@MikeLudwig:“我是否遗漏了其他内容?”——
NullPointerException
来自某个匿名内部类上的
run()
方法。“另外,NullPointerException不是权限被拒绝的结果吗,因为它仍在尝试运行?”--我们无法回答这个问题,特别是因为我们不知道这个
run()
方法试图做什么。@MikeLudwig:您似乎还没有初始化
mPlayer
。这是我在
run()中看到的唯一东西
这可能会导致
NullPointerException
。只是想知道为什么它在某些设备上工作,而不是在平板电脑上。我仍在寻找解决方案…看起来有很多关于Android 4.2的问题没有答案,无法打开内部存储上的文件…嗨,谢谢你的回复。如果你能帮忙的话,我该如何使用意图来实现这一点?这是我的代码:
final Intent i=newintent(MusicService.ACTION\u URL);File File=新文件(songPath);Uri=Uri.fromFile(文件);i.setData(uri);startService(一)
这一定是问题所在,因为如果我直接使用
MediaPlayer
而不使用
Intent
,我可以播放相同的文件。MusicService中的某些内容导致了您的问题,您如何在MusicService中设置uri?