lang:android:permission
Ceci est une ancienne révision du document !
Demande d'accès explicites pour permissions multiples
private ActivityResultLauncher<String[]> requestPermissionLauncher = registerForActivityResult( new ActivityResultContracts.RequestMultiplePermissions(), isGranted -> { if (!isGranted.containsValue(false)) { // Tous les accès sont bons. } } ); String[] ask_permission = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { ask_permission = Arrays.copyOf(ask_permission, ask_permission.length+1); ask_permission[ask_permission.length-1] = Manifest.permission.MANAGE_EXTERNAL_STORAGE; } requestPermissionLauncher.launch(ask_permission);
Requesting runtime permissions using new ActivityResult API Archive du 06/07/2020 le 26/09/2022
Demande d'accès sur événements
Avec quelques spécificités sur l'USB.
- Code Kotlin
private lateinit var mPermissionIntent: PendingIntent private lateinit var mUsbManager: UsbManager private val ACTION_USB_PERMISSION = "com.class.name.USB_PERMISSION" private val mUsbReceiver: BroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val device: UsbDevice? = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE) if (device == null) { return } when (intent.action) { ACTION_USB_PERMISSION -> { synchronized(this) { if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { } else { // Denied } } } UsbManager.ACTION_USB_DEVICE_ATTACHED -> { if (!mUsbManager.hasPermission(device)) { mUsbManager.requestPermission(device, mPermissionIntent) } else { // Denied } } UsbManager.ACTION_USB_DEVICE_DETACHED -> { // Detached } } } } override fun onCreate(savedInstanceState: Bundle?) { mUsbManager = getSystemService(Context.USB_SERVICE) as UsbManager mPermissionIntent = PendingIntent.getBroadcast(this, 0, Intent(ACTION_USB_PERMISSION), 0); val filter = IntentFilter() filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED) filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED) filter.addAction(ACTION_USB_PERMISSION) registerReceiver(mUsbReceiver, filter) }
app\src\main\AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidusbhost" android:versionCode="1" android:versionName="1.0" > <application <activity <intent-filter> <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> </intent-filter> <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" /> <intent-filter> <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> </intent-filter> </activity> </application> </manifest>
- Filtrer les devices USB dans
app\src\main\res\xml\device_filter.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- Accept all device VID/PID combinations --> <usb-device /> </resources>
lang/android/permission.1664178266.txt.gz · Dernière modification : de root