gpt4 book ai didi

Android:检测 SD 卡何时作为磁盘驱动器安装到计算机

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:21 24 4
gpt4 key购买 nike

我正在编写一个应用程序,需要检测 SD 卡何时作为磁盘驱动器通过 USB 安装到计算机或何时被手动移除。为此,我尝试使用广播接收器,但没有调用 onReceive。我的代码如下。

IntentFilter filter2 = new IntentFilter();
//filter2.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
filter2.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
filter2.addAction(Intent.ACTION_MEDIA_SHARED);
filter2.addAction(Intent.ACTION_MEDIA_REMOVED);
filter2.addAction(Intent.ACTION_MEDIA_MOUNTED);

registerReceiver(new CustomBroadcastReceiver(), filter2);

我的广播接收器如下...

public class CustomBroadcastReceiver extends BroadcastReceiver{

public CustomBroadcastReceiver(){

}

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();

if(action.equals(Intent.ACTION_MEDIA_UNMOUNTED) || action.equals(Intent.ACTION_MEDIA_SHARED) || action.equals(Intent.ACTION_MEDIA_REMOVED)){
HardwareManager.IS_MEDIA_MOUNTED = false;
}else if(action.equals(Intent.ACTION_MEDIA_MOUNTED)){
HardwareManager.IS_MEDIA_MOUNTED = true;
}else if(action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)){
HardwareManager.IN_AIRPLANE_MODE = intent.getBooleanExtra("state", false);
}
}

}

当我通过 USB 连接为磁盘驱动器时,onReceive 方法不会触发。

我做错了什么?

最佳答案

您必须添加"file"方案 (addDataScheme("file")),以便 IntentFilter 匹配广播 ACTION_MEDIA_* 操作 Intent 。

ACTION_MEDIA_* Intent 在 Intent.mData 字段中具有到挂载点的路径(参见 Intent docs ),但未设置方案的 IntentFilter 将仅匹配不包含数据的 Intent (参见 IntentFilter docs )。

关于Android:检测 SD 卡何时作为磁盘驱动器安装到计算机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com