Android通知声音不会从内存中振铃

时间:2013-09-11 06:00:46

标签: android notifications audio


历史: 我从网络服务器下载铃声,如果安装了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);


我做错了什么?
的问候,

2 个答案:

答案 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])?