From 1099dec4e6b7abd0540f72984017c7be702b15c9 Mon Sep 17 00:00:00 2001 From: Hyperling Date: Sun, 1 Nov 2026 06:22:48 -0700 Subject: [PATCH] main, fix NullPointerException. --- .../apps/infinitetimer/MainActivity.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/hyperling/apps/infinitetimer/MainActivity.java b/app/src/main/java/com/hyperling/apps/infinitetimer/MainActivity.java index 9e4d300..e5b339c 100755 --- a/app/src/main/java/com/hyperling/apps/infinitetimer/MainActivity.java +++ b/app/src/main/java/com/hyperling/apps/infinitetimer/MainActivity.java @@ -596,15 +596,19 @@ public class MainActivity extends AppCompatActivity { String tag = TAG + "playSound"; if (DEBUG) Log.d(tag, "Starting"); - /* Original code, did not work on Nexus 7 with CM 12.1-20151117 (Android 5.1.1) * / - Uri uri = Uri.parse("android.resource://" + getPackageName() + "/raw/chime_sound_7143"); - //Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), ringtoneUri); - Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), uri); - ringtone.play(); - /**/ - try { - mediaPlayer.start(); + // Safely instantiate MediaPlayer locally to prevent NPE + Uri uri = android.media.RingtoneManager.getDefaultUri(android.media.RingtoneManager.TYPE_NOTIFICATION); + MediaPlayer localPlayer = MediaPlayer.create(this, uri); + + if (localPlayer != null) { + localPlayer.start(); + localPlayer.release(); // Clean up resources immediately + } else { + // Fallback for edge cases where create() fails + android.media.Ringtone ringtone = android.media.RingtoneManager.getRingtone(this, uri); + if (ringtone != null) ringtone.play(); + } } catch (Exception e) { sharedPreferences.edit().putBoolean(keyStartStop, false).apply();