add support for requesting permissions from mods or Geode

This commit is contained in:
dankmeme01 committed 2024-01-26 21:30:30 +01:00
1 parent cf8b1edbe2
commit 433d6a0f46
3 files changed
+31

No files matched your search

+1
View File
@@ -17,6 +17,7 @@
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature <uses-feature
android:name="android.hardware.wifi" android:name="android.hardware.wifi"
@@ -45,11 +45,17 @@ class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperL
private var mHasWindowFocus = false private var mHasWindowFocus = false
private var mReceiver: BroadcastReceiver? = null private var mReceiver: BroadcastReceiver? = null
companion object {
var instance: GeometryDashActivity? = null
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
setupUIState() setupUIState()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
instance = this
// return back to main if Geometry Dash isn't found // return back to main if Geometry Dash isn't found
if (!LaunchUtils.isGeometryDashInstalled(packageManager)) { if (!LaunchUtils.isGeometryDashInstalled(packageManager)) {
returnToMain() returnToMain()
@@ -313,6 +319,7 @@ class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperL
super.onDestroy() super.onDestroy()
unregisterReceivers() unregisterReceivers()
FMOD.close() FMOD.close()
instance = null
} }
private fun resumeGame() { private fun resumeGame() {
@@ -5,13 +5,17 @@ import android.content.ClipData
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri import android.net.Uri
import android.provider.DocumentsContract import android.provider.DocumentsContract
import android.util.Log import android.util.Log
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.documentfile.provider.DocumentFile import androidx.documentfile.provider.DocumentFile
import com.geode.launcher.GeometryDashActivity
import com.geode.launcher.activityresult.GeodeOpenFileActivityResult import com.geode.launcher.activityresult.GeodeOpenFileActivityResult
import com.geode.launcher.activityresult.GeodeOpenFilesActivityResult import com.geode.launcher.activityresult.GeodeOpenFilesActivityResult
import com.geode.launcher.activityresult.GeodeSaveFileActivityResult import com.geode.launcher.activityresult.GeodeSaveFileActivityResult
@@ -249,4 +253,23 @@ object GeodeUtils {
fun isGeodeUri(uri: Uri): Boolean { fun isGeodeUri(uri: Uri): Boolean {
return "com.geode.launcher.user" == uri.authority return "com.geode.launcher.user" == uri.authority
} }
@JvmStatic
fun getPermissionStatus(permission: String): Boolean {
return ContextCompat.checkSelfPermission(
GeometryDashActivity.instance?.applicationContext ?: return false,
permission
) == PackageManager.PERMISSION_GRANTED
}
@JvmStatic
fun requestPermission(permission: String) {
if (!getPermissionStatus(permission)) {
ActivityCompat.requestPermissions(
GeometryDashActivity.instance!!,
arrayOf(permission),
12345
)
}
}
} }