2017-02-28 5 views
1

メディアプレーヤークラスを使用してアプリケーションで着信音を鳴らすと、クラッシュします。曲を着信音として選択すると、デフォルトの着信音が鳴り、着信音やオーディオマネージャーのクラスを使用して着信音を鳴らすと、クラッシュすることはありませんが、着信音を鳴らすことはできません。アンドロイドスタジオ、カスタム着メロがクラッシュする?

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

解決しよう::そのアクセス許可の問題を主にアンドロイド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ファイルに22を対象とSDKのバージョンを変更することで、この行を追加し、問題

関連する問題