android late request permission;update chat UI,launch chat from UI cm

This commit is contained in:
csf
2022-04-04 14:54:00 +08:00
parent 299bd11481
commit f083816fc7
9 changed files with 236 additions and 46 deletions

View File

@@ -15,7 +15,6 @@ import androidx.annotation.RequiresApi
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import java.lang.Exception
const val MEDIA_REQUEST_CODE = 42
@@ -36,7 +35,6 @@ class MainActivity : FlutterActivity() {
Intent(this, MainService::class.java).also {
bindService(it, serviceConnection, Context.BIND_AUTO_CREATE)
}
checkPermissions(this)
updateMachineInfo()
flutterMethodChannel = MethodChannel(
flutterEngine.dartExecutor.binaryMessenger,
@@ -67,6 +65,16 @@ class MainActivity : FlutterActivity() {
result.success(false)
}
}
"check_permission" -> {
if(call.arguments is String){
result.success(checkPermission(context, call.arguments as String))
}
}
"request_permission" -> {
if(call.arguments is String){
requestPermission(context, call.arguments as String)
}
}
"check_video_permission" -> {
mainService?.let {
result.success(it.checkMediaPermission())
@@ -76,11 +84,11 @@ class MainActivity : FlutterActivity() {
}
"check_service" -> {
flutterMethodChannel.invokeMethod(
"on_permission_changed",
"on_state_changed",
mapOf("name" to "input", "value" to InputService.isOpen.toString())
)
flutterMethodChannel.invokeMethod(
"on_permission_changed",
"on_state_changed",
mapOf("name" to "media", "value" to mainService?.isReady.toString())
)
}
@@ -94,7 +102,7 @@ class MainActivity : FlutterActivity() {
}
InputService.ctx = null
flutterMethodChannel.invokeMethod(
"on_permission_changed",
"on_state_changed",
mapOf("name" to "input", "value" to InputService.isOpen.toString())
)
}
@@ -154,7 +162,7 @@ class MainActivity : FlutterActivity() {
Log.d(logTag, "onResume inputPer:$inputPer")
activity.runOnUiThread {
flutterMethodChannel.invokeMethod(
"on_permission_changed",
"on_state_changed",
mapOf("name" to "input", "value" to inputPer.toString())
)
}

View File

@@ -340,7 +340,7 @@ class MainService : Service() {
fun checkMediaPermission(): Boolean {
Handler(Looper.getMainLooper()).post {
MainActivity.flutterMethodChannel.invokeMethod(
"on_permission_changed",
"on_state_changed",
mapOf("name" to "media", "value" to isReady.toString())
)
}

View File

@@ -1,17 +1,14 @@
package com.carriez.flutter_hbb
import android.annotation.SuppressLint
import android.app.*
import android.app.PendingIntent.FLAG_UPDATE_CURRENT
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.media.MediaCodecList
import android.media.MediaFormat
import android.os.Build
import android.os.Handler
import android.os.Looper
import android.util.Log
import androidx.annotation.RequiresApi
import androidx.core.app.NotificationCompat
import com.hjq.permissions.Permission
import com.hjq.permissions.XXPermissions
import java.util.*
@@ -40,13 +37,44 @@ fun testVP9Support(): Boolean {
return res != null
}
fun checkPermissions(context: Context) {
fun requestPermission(context: Context,type: String){
val permission = when (type) {
"audio" -> {
Permission.RECORD_AUDIO
}
"file" -> {
Permission.MANAGE_EXTERNAL_STORAGE
}
else -> {
return
}
}
XXPermissions.with(context)
.permission(Permission.RECORD_AUDIO)
.permission(Permission.MANAGE_EXTERNAL_STORAGE)
.permission(permission)
.request { permissions, all ->
if (all) {
Log.d("loglog", "获取存储权限成功:$permissions")
Log.d("checkPermissions", "获取存储权限成功:$permissions")
Handler(Looper.getMainLooper()).post {
MainActivity.flutterMethodChannel.invokeMethod(
"on_android_permission_result",
mapOf("type" to type, "result" to all)
)
}
}
}
}
fun checkPermission(context: Context,type: String): Boolean {
val permission = when (type) {
"audio" -> {
Permission.RECORD_AUDIO
}
"file" -> {
Permission.MANAGE_EXTERNAL_STORAGE
}
else -> {
return false
}
}
return XXPermissions.isGranted(context,permission)
}