0

SDカードがまだマウントされていない場合に、SDカードがマウントされるまでメインスレッドを待機させるアプリに取り組んでいます。どうすればいいですか?私は次のようなことを考えていました:

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

しかし、誰かがSDカードを持っていない場合、これが問題を引き起こすのではないかと心配しています. また、外部ストレージの状態が変わるまで待つように指示する方法がわかりません。これを行う正しい方法を教えていただけると、非常に助かります。

4

1 に答える 1

0

BroadcastReceiver を実装して、次のアクションを待つことができます。

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
        }
    }
}
于 2013-11-11T18:55:08.970 に答える