通知按下以在默认应用程序中打开文件(android)

时间:2014-04-17 02:54:41

标签: android android-intent notifications android-notifications

我目前有定期通知,可以跟踪下载(歌曲)的进度。一旦下载完成,我想做到这一点,如果用户按下通知,它会在默认应用程序中打开歌曲文件来处理该文件类型。

我尝试过搜索,但我不确定在使用.setDataAndType()时如何使用PendingIntent和MIME类型。有人可以解释或提供一些示例代码,说明我如何设置从默认应用程序中的特定文件路径打开文件的意图?

谢谢你, 丹尼尔

3 个答案:

答案 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类型。

我使用此代码打开“使用打开操作”窗口。如果您在手机或平板电脑上设置了默认应用,则会打开默认应用。