SD リソースを使用してゲームを開発しています。デバイスを MASS STORAGE として接続すると、デバイスがクラッシュします。デバイスを大容量記憶装置として PC に接続すると、デバイスが SD カードにアクセスできないためです。だから私は解決するためにさまざまな方法を試しました。
現在、BroadcastReceiver を実装しており、アクション ACTION_MEDIA_BAD_REMOVAL (SD カードが手動で取り外された場合) と ACTION_MEDIA_SHARED (デバイスがマスストレージとして接続されている場合にアクションを処理するはずですが、そうではありません) を処理しています。
これらのアクションの両方が検出されると、エラー メッセージを送信してアプリを終了します。
SD カードを手動で取り外すと機能しますが、大容量ストレージとしては機能しません。
また、すべてのフレームで、このメソッドを使用して、すべてのフレームで SD カードがデバイス上にあるかどうかを確認します。
public int hasSDCard()
{
String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))
return 1;
return 0;
}
0の場合、SDカードがなく、エラーメッセージも送信してアプリを終了します。
ただし、静止画は USB マスストレージ モードでは機能しません。
私の質問は:デバイスが USB Mass Storage として接続されていることをどのように検出できますか?
どのクラスを使用すればよいですか?
エラー メッセージ アクティビティを呼び出してアプリを終了するために実装できるリスナーはどれですか?