2015-10-21 3 views
2

Android 6.0 изменил свой способ управления подключением к SD-карте, и это не позволяет показывать правильно.Sdcard Содержимое не видно в DDMS File Explorer Android 6.0

До 5.x мы могли получить доступ к содержанию SDCARD через DDMS Perspective (Eclipse) в соответствии с иерархией

/мнт/оболочка/...

и теперь по Documentation под

/SDCard/

Я не вижу никакого содержимого этого каталога в DDMS, но на ПК или других приложениях (например, Astro).

Что я должен установить в Eclipse (DDMS), чтобы иметь возможность видеть этот контент?

ответ

1

Начиная с Android 6.0, сторонние приложения не имеют возможности видеть содержимое SDCard.

В Android 6.0, сторонние приложения не имеют доступа к sdcard_r и sdcard_rw GID. Вместо этого доступ контролируется установкой только соответствующего представления времени выполнения для этого приложения. Кросс-пользователь взаимодействия блокируются с использованием всех GID.

https://source.android.com/devices/storage/

В качестве дополнительной информации, Android 6,0 ​​вводит Adoptable Storage и Runtime Permissions которые накладывают ограничения на взаимодействие с хранением устройства.

Надеюсь, это поможет вам.

Update

касается того, как получить доступ к файлу из DDMS на Android 6.0. Это действие не допускается. Если вам нужно получить доступ к файлу из вашего приложения, вы можете использовать этот пример исходного кода:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

     mPermissions = new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }; 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      boolean isAllow = ContextCompat.checkSelfPermission(this, mPermissions[0]) == PackageManager.PERMISSION_GRANTED; 
      if (!isAllow) { 
       if (shouldShowRequestPermissionRationale(mPermissions[0])) { 
       // There is you need to display confirmation dialog about why you need to get this permission. 
       if (confirm("You need to copy database to device's storage") == YES) { 
        requestPermissions(mPermissions, REQUEST_CODE_ASK_PERMISSIONS) 
        } else { 
        // User does not agree with your requirements 
        // You should decide how the app will work in this case. 
        message("You can't use this app!"); 
        finish(); 
        } 
        return; 
       } 
       requestPermissions(mPermissions, REQUEST_CODE_ASK_PERMISSIONS); 
      } 

     } else { 
      runTheApp(); 
     } 
    } 

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
      switch (requestCode) { 
       case REQUEST_CODE_ASK_PERMISSIONS: 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
         if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
          runTheApp(); 
         } else { 
          message("You can't use this app!") 
         } 
        } 
       break; 
       case REJECT_CODE_PERMISSIONS: 
        break; 
       default: 
        super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
      } 
    } 
+0

Это не отвечает на вопрос, верно? Что может быть реальным решением? – Stan

+0

Привет Стэн. Проверьте мое обновление. Надеюсь, это поможет вам. –

+0

Я не думаю, что речь идет о программировании доступа к файлам, речь идет о страшном «улучшении» в среде IDE обычных разработчиков, которая сейчас неспособна передавать данные с устройств. Конечно, как разработчик, у меня есть возможность самостоятельно разработать менеджер файлов adb, но это всего лишь хак, который заставляет меня думать, что Google сошел с ума. – Stan