16

多くのAndroidデバイスでは、デバイスがコンピューターのUSBポートに接続されている場合、または一部のUSB充電デバイスに接続されている場合でも、電話はUSBストレージモードになります。デバイスがこのモードの場合、AndroidアプリはSDカードにアクセスできません。(1)デバイスがこのモードになったことを検出し、(2)少なくとも一時的にUSBストレージをプログラムでオフにして、AndroidアプリがSDカードにアクセスできるようにする方法はありますか?

私は他のSOの質問を見ましたが、答えは本当に十分ではありません(たとえば、Android:USBの検出)。

4

2 に答える 2

7

A1: Sd カードの現在の状態が SHARED の場合、MSC モードで PC に接続されていることを意味します。このケースは次のように確認できます。

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_SHARED.equals(state)) {
    // Sd card has connected to PC in MSC mode
}

A2: 以下を呼び出して、USB 大容量ストレージ接続を強制的にオフにすることができます。

MountService.setUsbMassStorageEnabled(false);

また

StorageManager.disableUsbMassStorage();

残念ながら、これらの API はどちらも公開されていません。

于 2012-04-14T12:36:23.807 に答える
4

あなたはそれを検出することができます(あなたはリンクを持っています)が、AFAIK、少なくともパブリックSDKAPIではUSBストレージをマウント/アンマウントすることはできません。Honeycomb(3.0以降)では、デバイスの外部ストレージへのアクセスにUSB大容量ストレージが使用されなくなったため、アプリとコンピューターが同時にアクセスできます。

于 2011-09-13T05:21:09.083 に答える