应用程序关闭时播放声音,没有硬编码的声音路径

时间:2013-06-17 20:59:07

标签: java android google-cloud-messaging

我想播放自己的自定义通知声音,将我的应用设置为系统默认声音。因此,当我收到GCM消息时,我有一个名为generateNotification的函数,它会在状态栏中发出通知并播放声音。

目前,我设置了这样的声音路径:

String GENERAL_NOTIFICATION_SOUND = "android.resource://" + MyActivity.getInstance().getPackageName() + "/" + R.raw.sound_file;

这在应用程序打开时有效,即使应用程序最近关闭也是如此。但是,如果应用程序被Android的内存管理关闭,那么MyActivity.getInstance()会返回null,并且我的应用程序因NullPointerException崩溃而没有正确显示通知,因为它无法解析路径

我相信我可以通过硬编码路径解决这个问题,但我觉得必须有更好的方法。如何在应用程序未打开时设置需要访问的文件的路径?

1 个答案:

答案 0 :(得分:2)

首先,您不应该有MyActivity.getInstance(),因为这是内存泄漏。

其次,无论代码是什么,Notification都可以访问Context,因为这是您获得NotificationManager的地方。 getPackageName()Context上的一种方法。因此,例如,您的GCM IntentServiceContext,因此不仅可以使用getSystemService()来检索NotificationManager,还可以调用getPackageName()找出你的应用程序包名称。