2


历史: 我从网络服务器下载铃声,如果安装了 SD 卡,我将该文件保存到 SD 卡路径,例如 mnt/sdcard/.my_folder_name/abc.mp3 ELSE 使用 context.getFilesDir() 保存到内部存储器,例如数据/数据/my.package.name/abc.mp3

问题: 我在通知栏中触发 Android 通知,通知工作正常,但是当我从内部存储器设置通知声音 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");

// 数据/数据/my.package.name/files/abc.mp3

notification.sound = ringtoneUri;         

notification.flags |= Notification.FLAG_AUTO_CANCEL;

notification.audioStreamType = AudioManager.STREAM_NOTIFICATION;

notificationManager.notify(1, notification);


难道我做错了什么???
问候,

4

2 回答 2

4

问题是,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);

...
谢谢萨利克
_

于 2013-09-18T06:35:57.113 回答
0

我会检查权限。每个应用程序都是一个用户。是否所有用户都有权阅读该文件(可能还有附件文件夹)?

于 2013-09-11T06:09:13.920 回答