When I click on configure bluetooth, the bluetooth should be turned on and the application should not crash
06-08 14:44:29.523 1386 1386 E AndroidRuntime: FATAL EXCEPTION: main
06-08 14:44:29.523 1386 1386 E AndroidRuntime: Process: tech.glasgowneuro.attysecg, PID: 1386
06-08 14:44:29.523 1386 1386 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.PrintWriter.flush()' on a null object reference
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at tech.glasgowneuro.attysecg.AttysECG$HRRecorder.shutdown(AttysECG.java:167)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at tech.glasgowneuro.attysecg.AttysECG$HRRecorder.access$2500(AttysECG.java:131)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at tech.glasgowneuro.attysecg.AttysECG.startRRrec(AttysECG.java:588)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at tech.glasgowneuro.attysecg.AttysECG.onStart(AttysECG.java:633)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1395)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.Activity.performStart(Activity.java:7348)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3139)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7073)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
06-08 14:44:29.523 1386 1386 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: FATAL EXCEPTION: main
06-08 14:44:35.874 1493 1493 E AndroidRuntime: Process: tech.glasgowneuro.attysecg, PID: 1493
06-08 14:44:35.874 1493 1493 E AndroidRuntime: java.lang.SecurityException: Permission Denial: starting Intent { act=android.settings.BLUETOOTH_SETTINGS cmp=com.android.settings/.Settings$BluetoothSettingsActivity } from ProcessRecord{c834b2bd0 1493:tech.glasgowneuro.attysecg/u0a178} (pid=1493, uid=10178) requires android.permission.BLUETOOTH_ADMIN
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:1966)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1934)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1884)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3600)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1673)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4689)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4647)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:5008)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:4976)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at tech.glasgowneuro.attysecg.AttysECG$4.onClick(AttysECG.java:685)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7073)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: Caused by: android.os.RemoteException: Remote stack trace:
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at com.android.server.am.ActivityStackSupervisor.checkStartAnyActivityPermission(ActivityStackSupervisor.java:2139)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:899)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:662)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at com.android.server.am.ActivityStarter.startActivityMayWait(ActivityStarter.java:1534)
06-08 14:44:35.874 1493 1493 E AndroidRuntime: at com.android.server.am.ActivityStarter.execute(ActivityStarter.java:604)
06-08 14:44:35.874 1493 1493 E AndroidRuntime:
06-08 14:44:41.380 1689 1689 E AndroidRuntime: FATAL EXCEPTION: main
06-08 14:44:41.380 1689 1689 E AndroidRuntime: Process: tech.glasgowneuro.attysecg, PID: 1689
06-08 14:44:41.380 1689 1689 E AndroidRuntime: java.lang.SecurityException: Permission Denial: starting Intent { act=android.settings.BLUETOOTH_SETTINGS cmp=com.android.settings/.Settings$BluetoothSettingsActivity } from ProcessRecord{f1bd45bd0 1689:tech.glasgowneuro.attysecg/u0a178} (pid=1689, uid=10178) requires android.permission.BLUETOOTH_ADMIN
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:1966)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1934)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1884)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3600)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1673)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4689)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4647)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:5008)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:4976)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at tech.glasgowneuro.attysecg.AttysECG$4.onClick(AttysECG.java:685)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7073)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: Caused by: android.os.RemoteException: Remote stack trace:
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at com.android.server.am.ActivityStackSupervisor.checkStartAnyActivityPermission(ActivityStackSupervisor.java:2139)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:899)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:662)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at com.android.server.am.ActivityStarter.startActivityMayWait(ActivityStarter.java:1534)
06-08 14:44:41.380 1689 1689 E AndroidRuntime: at com.android.server.am.ActivityStarter.execute(ActivityStarter.java:604)
06-08 14:44:41.380 1689 1689 E AndroidRuntime:
06-08 14:46:46.542 1813 1813 E AndroidRuntime: FATAL EXCEPTION: main
06-08 14:46:46.542 1813 1813 E AndroidRuntime: Process: tech.glasgowneuro.attysecg, PID: 1813
06-08 14:46:46.542 1813 1813 E AndroidRuntime: android.os.FileUriExposedException: file:///storage/emulated/0/attys/hr.tsv exposed beyond app through ClipData.Item.getUri()
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.os.StrictMode.onFileUriExposed(StrictMode.java:1978)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.net.Uri.checkFileUriExposed(Uri.java:2371)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.content.ClipData.prepareToLeaveProcess(ClipData.java:966)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.content.Intent.prepareToLeaveProcess(Intent.java:10917)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.content.Intent.prepareToLeaveProcess(Intent.java:10923)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.content.Intent.prepareToLeaveProcess(Intent.java:10902)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1671)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4689)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4647)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:5008)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:4976)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at tech.glasgowneuro.attysecg.AttysECG$12.onClick(AttysECG.java:1015)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7073)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
06-08 14:46:46.542 1813 1813 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: FATAL EXCEPTION: main
06-08 14:46:58.750 3238 3238 E AndroidRuntime: Process: tech.glasgowneuro.attysecg, PID: 3238
06-08 14:46:58.750 3238 3238 E AndroidRuntime: android.os.FileUriExposedException: file:///storage/emulated/0/attys/hr.tsv exposed beyond app through ClipData.Item.getUri()
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.os.StrictMode.onFileUriExposed(StrictMode.java:1978)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.net.Uri.checkFileUriExposed(Uri.java:2371)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.content.ClipData.prepareToLeaveProcess(ClipData.java:966)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.content.Intent.prepareToLeaveProcess(Intent.java:10917)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.content.Intent.prepareToLeaveProcess(Intent.java:10923)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.content.Intent.prepareToLeaveProcess(Intent.java:10902)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1671)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4689)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:4647)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:5008)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.app.Activity.startActivity(Activity.java:4976)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at tech.glasgowneuro.attysecg.AttysECG$12.onClick(AttysECG.java:1015)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7073)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
06-08 14:46:58.750 3238 3238 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)