Sto scrivendo un'applicazione che deve rilevare quando la scheda SD è montata come unità disco su un computer tramite USB o quando è stata rimossa manualmente. Ho provato a utilizzare un ricevitore di trasmissione per questo scopo, ma l'onReceive non viene chiamato. Il mio codice è il seguente.Android: Rileva quando la scheda SD è montata come unità disco su un computer
IntentFilter filter2 = new IntentFilter();
//filter2.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
filter2.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
filter2.addAction(Intent.ACTION_MEDIA_SHARED);
filter2.addAction(Intent.ACTION_MEDIA_REMOVED);
filter2.addAction(Intent.ACTION_MEDIA_MOUNTED);
registerReceiver(new CustomBroadcastReceiver(), filter2);
mio ricevitore di trasmissione è il seguente ...
public class CustomBroadcastReceiver extends BroadcastReceiver{
public CustomBroadcastReceiver(){
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(Intent.ACTION_MEDIA_UNMOUNTED) || action.equals(Intent.ACTION_MEDIA_SHARED) || action.equals(Intent.ACTION_MEDIA_REMOVED)){
HardwareManager.IS_MEDIA_MOUNTED = false;
}else if(action.equals(Intent.ACTION_MEDIA_MOUNTED)){
HardwareManager.IS_MEDIA_MOUNTED = true;
}else if(action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)){
HardwareManager.IN_AIRPLANE_MODE = intent.getBooleanExtra("state", false);
}
}
}
Il metodo OnReceive non si attiva quando si collega come unità disco tramite USB.
Cosa sto sbagliando?
Ciò sarebbe possibile con l'NDK di Android? –
Non lo so. Ti informerò se ho qualche suggerimento. – Chromium
penso che l'ascolto di ACTION_UMS_CONNECTED funzionerà per l'API versione 8 e android.os.storage.StorageEventListener funzionerà per le versioni successive dell'API. Correzioni –