Android:用于SD卡已完全安装且可读的状态
|
我有以下设置:
SD卡安装接收器(MountReceiver.java)
public IntentFilter getIntentFilter() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
intentFilter.addDataScheme(\"file\");
return intentFilter;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) {
setMounted(true);
} else if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) {
setMounted(false);
}
}
private void setMounted(boolean isMounted) {
if (isMounted) {
doPerformQuery();
}
}
当我注册接收者时,我会执行以下操作:
registerReceiver(mountInstance, mountInstance.getIntentFilter());
一切都很好,很好,并且按预期工作。我可以卸载并重新安装我的SD卡,并在适当情况下触发setMounted方法。我的问题是,安装SD卡后,我的doPerformQuery()方法返回0个结果。如果我将代码更改为:
Thread.sleep(5000);
doPerformQuery();
然后它会偶尔起作用。这使SD卡有5秒钟的时间来完成“准备”。我想知道SD卡准备何时完成并可以读取。目前,当我安装SD卡时,我的意图是,但它本身还没有“准备好”,因此无法读取。 SD卡完成“准备”时是否有这样的注册意图?附带一提,我说的是“准备中”,因为这是我的手机在通知栏中说的。我不确定这是否适用于所有手机,因为我找不到关于SD卡在线准备的一件事。
没有找到相关结果
已邀请:
2 个回复
链眷克袒姜
揽芳僵迷仇
,直到几秒钟后。如果正确,则可以使用简单的
循环进行检查,并在状态更改为
时继续