Tôi đang viết một ứng dụng cần phát hiện khi thẻ SD được gắn dưới dạng ổ đĩa vào máy tính qua USB hoặc khi nó đã được xóa thủ công. Tôi đã thử sử dụng bộ thu phát sóng cho mục đích này, nhưng onReceive không được gọi. Mã của tôi là như sau.Android: Phát hiện khi thẻ SD được gắn dưới ổ đĩa vào máy tính
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);
thu phát sóng của tôi là như sau ...
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);
}
}
}
Phương pháp onReceive không cháy, khi tôi kết nối như một ổ đĩa thông qua USB.
Tôi đang làm gì sai?
Điều này có thể thực hiện được với NDK của Android không? –
Tôi không biết. Sẽ thông báo cho bạn nếu tôi có bất kỳ gợi ý nào. – Chromium
tôi nghĩ rằng nghe ACTION_UMS_CONNECTED sẽ hoạt động đối với API phiên bản 8 và android.os.storage.StorageEventListener sẽ hoạt động đối với các phiên bản API sau này. –