的历史:
我从网络服务器下载铃声,如果安装了SD卡我将该文件保存到SD卡路径,如mnt / sdcard / .my_folder_name / abc.mp3 ELSE使用context.getFilesDir()保存到内部存储器,例如data / data / my .package.name / abc.mp3
的问题:
我在通知栏中触发Android通知,通知工作正常,但是当我从内部存储器设置NOTIFICATION SOUND URI时出现问题,它不播放声音。
在外部存储的情况下,工作精细和声音播放
ringtoneUri = Uri.parse("file:///mnt/sdcard/.my_folder_name/abc.mp3");
notification.sound = ringtoneUri;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.audioStreamType = AudioManager.STREAM_NOTIFICATION;
notificationManager.notify(1, notification);
在内部存储的情况下,不播放声音播放我检查了文件,它存在于那里
ringtoneUri = Uri.parse(context.getFilesDir().getPath()+"/abc.mp3");
// data / data / my.package.name / files / abc.mp3
notification.sound = ringtoneUri;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.audioStreamType = AudioManager.STREAM_NOTIFICATION;
notificationManager.notify(1, notification);
我做错了什么?
的问候,
答案 0 :(得分:3)
问题在于,NOTIFICATIONS不支持使用内部存储。 您需要为该音频文件添加公共权限。
File file = new File(context.getFilesDir().getPath()+"/abc.mp3");
file.setReadable(true, false);
ringtoneUri = Uri.parse(context.getFilesDir().getPath()+"/abc.mp3");
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.audioStreamType = AudioManager.STREAM_NOTIFICATION;
notificationManager.notify(1, notification);
...
由于
Salik
答案 1 :(得分:0)
我会检查权限。每个应用程序都是用户。是否所有用户都有权阅读文件(可能还有封闭文件夹[s])?