我目前有定期通知,可以跟踪下载(歌曲)的进度。一旦下载完成,我想做到这一点,如果用户按下通知,它会在默认应用程序中打开歌曲文件来处理该文件类型。
我尝试过搜索,但我不确定在使用.setDataAndType()时如何使用PendingIntent和MIME类型。有人可以解释或提供一些示例代码,说明我如何设置从默认应用程序中的特定文件路径打开文件的意图?
谢谢你, 丹尼尔
答案 0 :(得分:13)
使用挂起的意图创建这样的通知以打开默认音频播放器
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File("YOUR_SONG_URI"); // set your audio path
intent.setDataAndType(Uri.fromFile(file), "audio/*");
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
Notification noti = new NotificationCompat.Builder(this)
.setContentTitle("Download completed")
.setContentText("Song name")
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pIntent).build();
noti.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, noti);
答案 1 :(得分:1)
请将此代码放入您的通知代码
中Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("content://media/internal/images/media"));
将您的Uri路径更改为放置歌曲的目录
答案 2 :(得分:0)
你试过这个吗?
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File("/sdcard/download/path/test.mp3");
intent.setDataAndType(Uri.fromFile(file), "audio/*");
这个意图应该是通知的公开行动。既然你说了歌,那么MIME就是audio / *,否则你可以使用AndroidMimeTypeMap从文件扩展中获取mime类型。
我使用此代码打开“使用打开操作”窗口。如果您在手机或平板电脑上设置了默认应用,则会打开默认应用。