diff --git a/fmapp2/AndroidManifest.xml b/fmapp2/AndroidManifest.xml
index 786fcf8..5dd03a4 100644
--- a/fmapp2/AndroidManifest.xml
+++ b/fmapp2/AndroidManifest.xml
@@ -29,7 +29,7 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.caf.fmradio" >
-    <uses-sdk android:minSdkVersion="29"  android:targetSdkVersion="29"/>
+    <uses-sdk android:minSdkVersion="31"  android:targetSdkVersion="31"/>
     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
     <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
@@ -38,8 +38,10 @@
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.RECORD_AUDIO" />
     <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
@@ -65,7 +67,8 @@
             android:allowTaskReparenting="true"
             android:launchMode="singleTask"
             android:configChanges="keyboardHidden|orientation|screenSize"
-            android:excludeFromRecents="false" >
+            android:excludeFromRecents="false"
+            android:exported="true" >
 
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -79,14 +82,16 @@
 
         </activity>
 
-        <receiver android:name="com.caf.fmradio.FMMediaButtonIntentReceiver">
+        <receiver android:name="com.caf.fmradio.FMMediaButtonIntentReceiver"
+                  android:exported="true" >
             <intent-filter>
                  <action android:name="android.media.AUDIO_BECOMING_NOISY" />
             </intent-filter>
         </receiver>
 
         <activity android:name=".Settings"
-            android:label="@string/settings_menu">
+                  android:exported="true"
+                  android:label="@string/settings_menu">
 
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -95,6 +100,7 @@
         </activity>
 
         <activity android:name=".FMStats"
+                  android:exported="true"
             android:label="@string/test_menu">
 
             <intent-filter>
@@ -104,6 +110,7 @@
         </activity>
 
         <activity android:name=".FmTags"
+                  android:exported="true"
             android:label="@string/rt_plus_tags">
 
             <intent-filter>
@@ -113,6 +120,7 @@
         </activity>
 
        <activity android:name=".StationListActivity"
+            android:exported="true"
             android:label="@string/app_label_all_channels"
             android:configChanges="orientation|keyboardHidden|screenSize|fontScale">
 
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index b86b0cd..5f375dd 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -70,7 +70,7 @@
 import android.os.PowerManager;
 import android.os.PowerManager.WakeLock;
 import android.os.RemoteException;
-import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyCallback;
 import android.telephony.TelephonyManager;
 import android.util.Log;
 import android.widget.RemoteViews;
@@ -234,6 +234,7 @@
    private boolean mEventReceived = false;
    private boolean isfmOffFromApplication = false;
    private AudioFocusRequest mGainFocusReq;
+   private PhoneStateCallback mPhoneStateCallback;
 
    public FMRadioService() {
    }
@@ -247,8 +248,10 @@
       mPrefs = new FmSharedPreferences(this);
       mCallbacks = null;
       TelephonyManager tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-      tmgr.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE |
-                                       PhoneStateListener.LISTEN_DATA_ACTIVITY);
+      if (mPhoneStateCallback == null) {
+         mPhoneStateCallback = new PhoneStateCallback();
+      }
+      tmgr.registerTelephonyCallback(getApplicationContext().getMainExecutor(), mPhoneStateCallback);
       PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
       mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getName());
       mWakeLock.setReferenceCounted(false);
@@ -362,7 +365,7 @@
       }
 
       TelephonyManager tmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-      tmgr.listen(mPhoneStateListener, 0);
+      tmgr.unregisterTelephonyCallback(mPhoneStateCallback);
 
       Log.d(LOGTAG, "onDestroy: unbindFromService completed");
 
@@ -1352,7 +1355,7 @@
        cv.put(MediaStore.Audio.Media.DATA, file.getAbsolutePath());
        cv.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));
        cv.put(MediaStore.Audio.Media.DATE_MODIFIED, (int) (modDate / 1000));
-       cv.put(MediaStore.Audio.Media.MIME_TYPE, "audio/aac_mp4");
+       cv.put(MediaStore.Audio.Media.MIME_TYPE, "audio/mpeg");
        cv.put(MediaStore.Audio.Media.ARTIST,
                res.getString(R.string.audio_db_artist_name));
        cv.put(MediaStore.Audio.Media.ALBUM,
@@ -1511,11 +1514,12 @@
    }
 
     /* Handle Phone Call + FM Concurrency */
-   private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
+   private class PhoneStateCallback extends TelephonyCallback implements
+            TelephonyCallback.CallStateListener,
+            TelephonyCallback.DataActivityListener {
       @Override
-      public void onCallStateChanged(int state, String incomingNumber) {
+      public void onCallStateChanged(int state){
           Log.d(LOGTAG, "onCallStateChanged: State - " + state );
-          Log.d(LOGTAG, "onCallStateChanged: incomingNumber - " + incomingNumber );
           fmActionOnCallState(state );
       }
 
