PackageManager packageManager = requireActivity().getPackageManager();
Intent intent = new Intent(Settings.ACTION_PRINT_SETTINGS);
// Create intent to show chooser
Intent chooser = Intent.createChooser(intent, getString(R.string.open));
if (intent.resolveActivity(packageManager) != null) {
startActivity(chooser);
}else{
try{
startActivity(intent);
}catch (Exception e) {
Toast.makeText(requireActivity(), R.string.Oopppsss, Toast.LENGTH_SHORT).show();
}
}
<intent-filter
android:priority="1">
<action
android:name="android.settings.ACTION_PRINT_SETTINGS" />
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
И в коде без всяких пермишенов достаточно
С событиями клавиатуры лучше не связываться.
Доступ к камере - это там где нет апаратного считывателя и используется камера.
В таком случае сдк от вендера это по сути заточенный под данную модель разной прямости руками zxing / opencv