diff --git a/build.gradle b/build.gradle index fc31f55..6dd27e7 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:8.2.1' + classpath 'com.android.tools.build:gradle:8.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong @@ -26,6 +26,19 @@ allprojects { google() jcenter() } + // This code is where all the magic happens and fixes the error. + subprojects { + afterEvaluate { project -> + if (project.hasProperty('android')) { + project.android { + if (namespace == null) { + namespace project.group + } + } + } + } + } + // This code is where all the magic happens and fixes the error. } task clean(type: Delete) { diff --git a/screen_mirror/build.gradle b/screen_mirror/build.gradle index aaa9ae3..39ec837 100644 --- a/screen_mirror/build.gradle +++ b/screen_mirror/build.gradle @@ -133,6 +133,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.activity:activity-ktx:1.3.1' + api 'androidx.activity:activity-ktx:1.4.0' implementation 'io.bimmergestalt:IDriveConnectKitAndroid:0.6' implementation project(path: ':lib') diff --git a/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/CarAppService.kt b/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/CarAppService.kt index 5f27cf0..e5f83ce 100644 --- a/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/CarAppService.kt +++ b/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/CarAppService.kt @@ -132,7 +132,7 @@ class CarAppService: Service() { wl.release() } else if (settingsViewer[AppSettings.KEYS.AUTO_PERMISSION].toInt()%100 == 21) { - MainController(applicationContext).promptPermission(true) +// MainController(applicationContext).promptPermission(true) }else if (settingsViewer[AppSettings.KEYS.AUTO_PERMISSION].toInt()%100 == 31) { val fullScreenIntent = Intent(applicationContext, RequestActivity::class.java) val fullScreenPendingIntent = PendingIntent.getActivity( diff --git a/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainActivity.kt b/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainActivity.kt index c79972e..9b2e982 100644 --- a/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainActivity.kt +++ b/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainActivity.kt @@ -10,22 +10,11 @@ import android.widget.Toast import android.app.AppOpsManager import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle import android.os.Process -import android.content.pm.PackageManager - -import android.view.View -import android.view.inputmethod.InputMethodManager -import android.widget.Button -import android.widget.TextView -import android.widget.Toast - import androidx.activity.viewModels -import android.app.AppOpsManager import android.content.Intent import android.net.Uri -import android.os.Process import android.provider.Settings.ACTION_MANAGE_OVERLAY_PERMISSION import android.provider.Settings.canDrawOverlays import androidx.activity.viewModels @@ -41,11 +30,12 @@ import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts.RequestPermission import android.content.Context import android.os.Build +import androidx.activity.ComponentActivity import androidx.annotation.RequiresApi const val TAG = "ScreenMirroring" -class MainActivity : AppCompatActivity() { +class MainActivity : ComponentActivity() { val controller by lazy { MainController(this) } val viewModel by viewModels{ MainModel.Factory(this.applicationContext) } @@ -204,7 +194,7 @@ class MainActivity : AppCompatActivity() { if (settingsViewer[AppSettings.KEYS.AUTO_PERMISSION].isNotEmpty() && settingsViewer[AppSettings.KEYS.AUTO_PERMISSION].toInt() > 100) { val appOps = getSystemService(AppOpsManager::class.java) println("PROJECT_MEDIA appops: ${appOps.checkOpNoThrow("android:project_media", Process.myUid(), packageName)}") - controller.promptPermission(false) + controller.promptMirroringPermission() } } }else{ diff --git a/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainController.kt b/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainController.kt index 7e10a4d..efa5c3e 100644 --- a/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainController.kt +++ b/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainController.kt @@ -12,13 +12,6 @@ class MainController(val activity: Activity) { companion object { const val REQUEST_POST_NOTIFICATIONS = 60 -class MainController(val context: Context) { - fun promptPermission(fromBackground: Boolean) { - val intent = Intent(context, RequestActivity::class.java) - if (fromBackground) { - intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK - } - context.startActivity(intent) } private fun tryOpenActivity(intent: Intent): Boolean { diff --git a/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainModel.kt b/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainModel.kt index e24b7bd..e68d147 100644 --- a/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainModel.kt +++ b/screen_mirror/src/main/java/io/bimmergestalt/idriveconnectaddons/screenmirror/MainModel.kt @@ -49,7 +49,6 @@ class MainModel(appContext: Context, val carCapabilities: Map): val minFrameTime = StringLiveSetting(appContext, AppSettings.KEYS.MINFRAMETIME) val jpgQuality = StringLiveSetting(appContext, AppSettings.KEYS.jpgQuality) -class MainModel: ViewModel() { val notificationPermission = MutableLiveData(false) val mirroringState = ScreenMirrorProvider.state val mirroringStateText: LiveData String> = ScreenMirrorProvider.state.map({getString(R.string.lbl_status_not_ready)}) { @@ -73,4 +72,4 @@ class MainModel: ViewModel() { notificationPermission.value = Build.VERSION.SDK_INT < 33 || context.checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED } -} \ No newline at end of file + } diff --git a/screen_mirror/src/main/res/layout/activity_main.xml b/screen_mirror/src/main/res/layout/activity_main.xml index 323a770..efcc7eb 100644 --- a/screen_mirror/src/main/res/layout/activity_main.xml +++ b/screen_mirror/src/main/res/layout/activity_main.xml @@ -78,7 +78,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:onClick="@{() -> controller.promptMirroringPermission()}" - android:onClick="@{() -> controller.promptPermission(false)}" + android:visibility="@{viewModel.mirroringState == MirroringState.NOT_ALLOWED}" android:text="@string/btn_grant_mirror_auth"/>