Я использую Visual Studio 2015 и Xamarin, и я пытаюсь обнаружить, когда пользователь вставляет USB-накопитель в приложение для Android.Xamarin Android, обнаружение подключения USB-накопителя
Это моя реализация BroadcastReceiver.
[BroadcastReceiver(Enabled =true)]
[IntentFilter(new[] { Intent.ActionMediaMounted })]
class DeviceMonitor : BroadcastReceiver, IDeviceMonitor
{
public override void OnReceive(Context context, Intent intent)
{
if (DeviceAdded != null)
DeviceAdded(this, new EventArgs());
if (intent.Action.ToLower() == "android.intent.action.ums_connected")
{
Java.IO.File[] files = context.GetExternalMediaDirs();
}
}
}
Приемник зарегистрирован в MainActivity в OnCreate метод
DeviceMonitor monitor = new Classes.DeviceMonitor();
RegisterReceiver(monitor, new Android.Content.IntentFilter(Intent.ActionMediaMounted));
Это мой AndroidManifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" package="WebView.CrossPlatform.Server.Droid" android:versionCode="1">
<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-feature android:name="android.hardware.usb.host" android:required="false" />
<application android:label="WebView.CrossPlatform.Server.Droid">
<receiver android:name=".Classes.DeviceMonitor" android:enabled="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<data android:scheme="file" />
</intent-filter>
</receiver>
</application>
Но это не похоже на работу. Я искал решения и искал все, что мог найти, но ничего не работает.
Может ли кто-нибудь увидеть, что я делаю неправильно?
Спасибо,
Метод onreceive никогда не называется, поэтому мне не важно, что я там вложил. В документации также указано, что действие «UMS_CONNECTED» устарело. – Benjamien
@Benjamien, вы читали этот [ответ] (http://stackoverflow.com/questions/4600896/android-detecting-usb), который предлагает использовать 'BatteryManager'? В любом случае, мы должны объявить действие в манифесте. –