PendingIntent не срабатывает для запроса разрешения USB в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 PendingIntent не срабатывает для запроса разрешения USB в Android

Сообщение Anonymous »

Я пытаюсь запросить разрешение USB в своем приложении для Android и установить связь с USB-устройствами. Однако после того, как отображается всплывающее окно запроса разрешения USB и пользователь предоставляет разрешение, UsbBroadcastReceiver не срабатывает, и PendingIntent, который я настроил для трансляции, не получен.

Код: Выделить всё

class MainActivity : ComponentActivity() {

private val ACTION_USB_PERMISSION = BuildConfig.APPLICATION_ID + ".USB_PERMISSION"
private lateinit var usbReceiver: UsbBroadcastReceiver

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

usbReceiver = UsbBroadcastReceiver()

val permissionIntent = PendingIntent.getBroadcast(
this,
0,
Intent(ACTION_USB_PERMISSION),
PendingIntent.FLAG_IMMUTABLE
)

val usbManager = getSystemService(Context.USB_SERVICE) as UsbManager
usbManager.deviceList.values.forEach { device ->
if (!usbManager.hasPermission(device)) {
Log.d("USB_REQUEST", "Requesting permission for device: ${device.deviceName}")
usbManager.requestPermission(device, permissionIntent)
}
}

val filter = IntentFilter().apply {
addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED)
addAction(UsbManager.ACTION_USB_DEVICE_DETACHED)
addAction(ACTION_USB_PERMISSION)
}
registerReceiver(usbReceiver, filter, RECEIVER_NOT_EXPORTED)

setContent {
SampleTestAppTheme {
Scaffold { innerPadding ->
Box(
modifier = Modifier
.padding(innerPadding)
.fillMaxSize()
) {
Text("USB Communication Example", modifier = Modifier.padding(16.dp))
}
}
}
}
}
}

class UsbBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val action = intent.action
Log.d("USB_RECEIVER", "Received Action: $action")

when (action) {
BuildConfig.APPLICATION_ID + ".USB_PERMISSION" -> {
val device: UsbDevice? = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE)
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
Log.d("USB_RECEIVER", "Permission granted for device: ${device?.deviceName}")
// Set up USB communication here
} else {
Log.e("USB_RECEIVER", "Permission denied for device: ${device?.deviceName}")
}
}
UsbManager.ACTION_USB_DEVICE_ATTACHED -> {
Log.d("USB_RECEIVER", "USB Device Attached")
}
UsbManager.ACTION_USB_DEVICE_DETACHED -> {
Log.d("USB_RECEIVER", "USB Device Detached")
}
}
}
}
Я ожидал, что UsbBroadcastReceiver сработает, когда пользователь предоставит или откажет в разрешении для USB-устройства.

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-android
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • PendingIntent не срабатывает для запроса разрешения USB в Android
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Требование использования PendingIntent.FLAG_IMMUTABLE при запросе разрешения USB
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Требование использования PendingIntent.FLAG_IMMUTABLE при запросе разрешения USB
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Правило Linux USB срабатывает в цикле
    Гость » » в форуме Linux
    0 Ответы
    9 Просмотры
    Последнее сообщение Гость
  • Использование PendingIntent в Android
    Гость » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Гость

Вернуться в «Android»