Проблема - Как заставить мои приложения увидеть USB флешки-мышки? (Вопрос НЕ о подключении к компьютеру)
Далее я опишу подробно (можно всё пропустить кроме последнего абзаца), но кратко: 99% вероятности - суть проблемы в запрете доступа сторонних приложений к USB-OTG в Android 4. KitKat (я не буду описывать почему я так уверен в программах которые и с плей маркета и мои, и чужие, OTG кабеле и др.)
Подробно: Телефон Meizu MX4 Pro (Android 4.4.4, API 19) видит вообще все USB флешки-мышки но только штатным проводником. Все сторонние приложения (кроме ES File) заявляют об отсутствии OTG. И не было бы проблемы если бы и не мои программы которые тоже не видят внешних устройств! Вон оно зло в чистом виде! После очень долгого перебора сторонних программ, лазанья по базару и выпрашивая с собачьими глазами попробовать разные OTG переходники, ослабленный после операции споткнулся, упал и разбил экран =(. После сайтов и форумов пришел к выводу, что причина в ... Android 4. Где были намеренно произведены сложности в доступе сторонним программам к внешним носителям!
Прописи в манифесте не увенчались успехом, ну тогда я скачал и декомпилировал готовый ES File .apk (менеджер который смог увидеть USB флешки), зашел в её огромный манифест, далее лишь его часть:
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="20" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name=".PERMISSION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-feature android:name="android.hardware.bluetooth" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.hardware.wifi" android:required="false" />
<uses-feature android:name="android.software.leanback" android:required="false" />
<uses-feature android:name="android.hardware.screen.portrait" android:required="false" />
<supports-screens android:anyDensity="true"
android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
...
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
...
<activity
android:theme="@*android:style/Theme.Translucent.NoTitleBar"
android:name="com.estrongs.android.pop.app.ESUsePromptActivity"
android:launchMode="singleTop"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity android:theme="@style/ES.Base.Theme.NoActionBar"
android:label="@string/app_name"
android:name="com.estrongs.android.pop.app.UsbMonitorActivity"
android:enabled="true"
android:configChanges="keyboardHidden|orientation|screenSize">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" />
И файл-фильтр указанный в манифесте:
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:android="http://schemas.android.com/apk/res/android">
<usb-device class="8" />
</resources>
Но моя сверх гениальная =) идея не помогла, так что же делать? Естественно, я знаю о разрешениях приложения в телефоне. Опять напомню суть проблемы - заставить ИМЕННО МОИ приложения увидеть USB устройства типа флешки и мышки (подключение к компьютеру НЕ интересует). Сторонние я скачивал только что бы узнать о решении проблемы. Может манифест я не правильно оформил, или что ещё нужно добавить куда то? А может есть ещё какое-то секретное разрешение в настройках телефона? Нельзя упомянуть, что у меня телефон практически не поддерживает секретные коды типа ##12345##, я уже пробовал. Прошу помощи, всё что мог делал сам, теперь я в тупике. Буду очень рад любому предположению.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Хочу создать класс, наследуемый по классу ArrayList и переопределить его методы ( допустим добавить в методadd() счётчик, который будет подсчитывать...
Как загрузить звук в soundpool из URI? Сейчас таким методом не работаетХотя из raw все грузит