有没有办法检测USB闪存驱动器何时插入Android设备?我能够使用广播接收器检测SD卡,但它不适用于USB。我想避免投票。
注册接收者的代码:
private void RegisterUpdateReceiver()
{
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.MEDIA_MOUNTED");
intentFilter.addDataScheme("file");
myReceiver = new MyReceiver();
this.registerReceiver(myReceiver, intentFilter);
}
接收者代码:
public class MyReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if (action.equals("android.intent.action.MEDIA_MOUNTED"))
{
// react to event
}
}
答案 0 :(得分:3)
如果检测到连接和分离USB将起作用" android.hardware.usb.action.USB_DEVICE_ATTACHED"可以使用。 确保接收器和intent过滤器的定义也添加到清单中。
答案 1 :(得分:2)
Android,在SDK级别,没有USB驱动器的概念。没有关于它们应该安装的位置的规则,当它们出现/消失时的广播等等。也许这个领域的一些标准化将在未来的Android版本中出现,但它今天不存在。
答案 2 :(得分:1)
这是AndroidManifest.xml中接收器的xml版本:
<receiver
android:name="MyMountBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<action android:name="android.intent.action.MEDIA_UNMOUNTED"/>
<data android:scheme="file" />
</intent-filter>
</receiver>
答案 3 :(得分:1)
这就是我使它在Android 6.0上运行的方式。 基本上,我们需要检测的是何时安装驱动器,这可以由ACTION_MEDIA_MOUNTED完成,即“ android.intent.action.MEDIA_MOUNTED”。
请遵循以下步骤:
您可以参考:https://developer.android.com/reference/android/content/Intent#ACTION_MEDIA_MOUNTED
注意:仅为ACTION_MEDIA_MOUNTED注册广播接收器无效。因此出于许可目的使用广播“ ACTION_USB_DEVICE_ATTACHED”。