告诉线程等待 SD 卡挂载完毕



我正在开发一个应用程序,我希望主线程在尚未挂载的情况下等到 SD 卡挂载。我该怎么做?我在想这样的事情:

while (!android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
        // Wait
    }

但我担心当有人没有SD卡时,这会带来问题。另外,我不知道如何告诉它等到外部存储状态发生变化。如果你们中的一些人能向我展示正确的方法,那将对我有很大帮助。

您可以实现广播接收器并等待以下操作:

android.intent.action.MEDIA_MOUNTED
android.intent.action.MEDIA_EJECT

AndroidManifest.xml

    <receiver
        android:name=".MyReceiver"
        android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.MEDIA_EJECT" />
            <action android:name="android.intent.action.MEDIA_MOUNTED" />
            <data android:scheme="file" />
        </intent-filter>
    </receiver>

MyReceiver.java

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if ((Intent.ACTION_MEDIA_EJECT.equals(intent.getAction())
                || Intent.ACTION_MEDIA_MOUNTED.equals(intent.getAction()))
                && Environment.isExternalStorageRemovable()) {
            // Handle the SD card state changed
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新