2017-02-28 209 views
1

在我的应用程序中使用媒体播放器类播放铃声时,它会崩溃。当我选择一首歌曲作为铃声时,使用默认铃声时它可以正常工作,并且在使用铃声和音频管理器类播放铃声时,它不会崩溃,但我无法循环铃声。android studio,播放自定义铃声?

Uri audio = RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(),RingtoneManager.TYPE_RINGTONE); 
mp = MediaPlayer.create(getApplicationContext(), audio); 

登录猫错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference 
+0

请分享您的代码。 –

+0

我曾尝试过许多mediaplyer的组合,但结果是相同的 –

+0

如果你的问题已经解决了,你可以接受我的答案@AbhishecKumar –

回答

0

试试这个,它的工作对我来说,

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
MediaPlayer player = MediaPlayer.create(this, notification); 
player.setLooping(true); 
player.start(); 

更多的是指该链接。 http://www.concretepage.com/android/android-ringtone-and-ringtonemanager-example-get-default-and-current-ringtone

+0

我应该使用TYPE_RINGTONE –

+0

是的,你可以使用,你也可以检查该链接也是完整的例子。 –

+0

仍然应用程序崩溃,当选择一首歌曲作为铃声 –

1

问题迎刃而解::它的权限问题主要集中在Android SDK中23(棉花糖) 要解决,加入这一行

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
     requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); 
    } 

或改变的build.gradle文件有针对性的SDK版本至22日,