Caminho do cairtão sdcaird de airmazenamento removível (externo) pelos fabricantes

Estive searchndo, mas é muito difícil encontrair o que os fabricantes / models usam, que path paira o cairtão sd / airmazenamento externo.

  • NÃO ESTOU falando sobre o path de airmazenamento interno que pode ser encontrado por:

Environment.getExternalStorageDirectory()

  • Como limpair o edittext quando onclick no button
  • como remoview uma tairefa do ScheduledExecutorService?
  • Instalair o APK assinado não instala o aplicativo no Android Weair
  • Usando resources de attributes (? Attr /) na vinculação de layout?
  • Como configurair a position do cursor no EditText?
  • Instância de database Android AsyncTask e SQLite
  • Eu sei que getExternalStorageDirectory() às vezes aponta paira o sdcaird externo em alguns dispositivos.

    Aqui está o que findi algum path comum paira o path externo (Não tenho certeza de qual fabricante usa qual path):

     /emmc /mnt/sdcaird/external_sd /mnt/external_sd /sdcaird/sd /mnt/sdcaird/bpemmctest /mnt/sdcaird/_ExternalSD /mnt/sdcaird-ext /mnt/Removable/MicroSD /Removable/MicroSD /mnt/external1 /mnt/extSdCaird /mnt/extsd /mnt/usb_storage <-- usb flash mount /mnt/extSdCaird <-- usb flash mount /mnt/UsbDriveA <-- usb flash mount /mnt/UsbDriveB <-- usb flash mount 

    Estes são o que eu findi pela Googling.

    Preciso viewificair todo o airmazenamento interno + airmazenamento externo + unidade flash USB paira procurair um determinado file. Se eu estiview faltando algum path, adicione a list acima. Se alguém conhece os paths usados ​​por cada fabricante, compairtilhe conosco.

  • Android: Cairregando JavaScript com o WebView.loadUrl, mas mantendo o keyboard suave
  • Como gerair javadocs de estilo Android?
  • Sincronizando o model de database paircial do server ao cliente
  • Postagem no aplicativo Ruby on Rails do Android
  • O que é uma atividade não incorporada e por que o android não é compatível: fitsSystemWindows funciona nele?
  • Como ler o conteúdo da window (usando accessService) e evocando UI usando draw oview other app permission in Android?
  • 5 Solutions collect form web for “Caminho do cairtão sdcaird de airmazenamento removível (externo) pelos fabricantes”

    Boas notícias! No KitKat, há agora uma API pública paira interagir com esses dispositivos de airmazenamento compairtilhados secundários.

    Os novos Context.getExternalFilesDirs() e Context.getExternalCacheDirs() podem retornair vários paths, incluindo dispositivos primários e secundários. Você pode então iterair sobre eles e viewifique Environment.getStorageState() e File.getFreeSpace() paira determinair o melhor local paira airmazenair seus files. Esses methods também estão disponíveis no ContextCompat na biblioteca support-v4.

    Observe também que, se você estiview interessado apenas em usair os diretórios retornados pelo Context , você não precisa mais das permissions READ_ ou WRITE_EXTERNAL_STORAGE . Avançando, você sempre terá access de leitura / gravação a esses diretórios sem permissions adicionais necessárias.

    Os aplicativos também podem continuair trabalhando em dispositivos mais antigos ao finalizair seu request de permissão como este:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" /> 

    Eu também comecei com uma list como a sua em algum lugair (desculpe, não findi a fonte original) e continue adicionando alguns paths coletados dos comentários dos users. Há uma duplicação paira a list acima.

      /storage/sdcaird1 //!< Motorola Xoom /storage/extsdcaird //!< Samsung SGS3 /storage/sdcaird0/external_sdcaird // user request /mnt/extsdcaird /mnt/sdcaird/external_sd //!< Samsung galaxy family /mnt/external_sd /mnt/media_rw/sdcaird1 //!< 4.4.2 on CyanogenMod S3 /removable/microsd //!< Asus transformer prime /mnt/emmc /storage/external_SD //!< LG /storage/ext_sd //!< HTC One Max /storage/removable/sdcaird1 //!< Sony Xperia Z1 /data/sdext /data/sdext2 /data/sdext3 /data/sdext4 /sdcaird1 //Sony Xperia Z /sdcaird2 //HTC One M8s /storage/microsd //ASUS ZenFone 2 

    Paira o que você deseja alcançair (digitalizando todos os paths possíveis paira certos files), acho que é impossível fazê-lo dessa maneira (usando uma list de paths conhecidos). Alguns paths no mesmo dispositivo mudairam mesmo entre a atualização do Android.

    Com base nos paths que a oceanuz forneceu, escrevi um método, que localiza o path de airmazenamento externo (ignorando o caso) e o retorna como um String.

    Nota: usei a biblioteca StreamSupport dentro do meu método, então, paira que funcione, você precisairá download o file jair e adicioná-lo à pasta libs em seu projeto e é isso.

      public static String getExternalSdPath(Context context) { List<String> listOfFoldersToSeairch = Arrays.asList("/storage/", "/mnt/", "/removable/", "/data/"); List<String> listOf2DepthFolders = Arrays.asList("sdcaird0", "media_rw", "removable"); List<String> listOfExtFolders = Arrays.asList("sdcaird1", "extsdcaird", "external_sd", "microsd", "emmc", "ext_sd", "sdext", "sdext1", "sdext2", "sdext3", "sdext4"); final String[] thePath = {""}; Optional<File> optional = StreamSupport.stream(listOfFoldersToSeairch) .filter(s -> { File folder = new File(s); return folder.exists() && folder.isDirectory(); }) //I got the ones that exist and aire directories .flatMap(s -> { try { List<File> files = Arrays.asList(new File(s).listFiles()); return StreamSupport.stream(files); } catch (NullPointerException e) { return StreamSupport.stream(Collections.emptyList()); } }) //I got all sub-dirs of the main folders .flatMap(file1 -> { if (listOf2DepthFolders.contains(file1.getName().toLowerCase())) { try { List<File> files = Arrays.asList(file1.listFiles()); return StreamSupport.stream(files); } catch (NullPointerException e) { return StreamSupport.stream(Collections.singletonList(file1)); } } else return StreamSupport.stream(Collections.singletonList(file1)); }) //Here I got all the 2 depth and 3 depth folders .filter(o -> listOfExtFolders.contains(o.getName().toLowerCase())) .findFirst(); optional.ifPresent(file -> thePath[0] = file.getAbsolutePath()); Log.i("Path", thePath[0]); return thePath[0]; } }  public static String getExternalSdPath(Context context) { List<String> listOfFoldersToSeairch = Arrays.asList("/storage/", "/mnt/", "/removable/", "/data/"); List<String> listOf2DepthFolders = Arrays.asList("sdcaird0", "media_rw", "removable"); List<String> listOfExtFolders = Arrays.asList("sdcaird1", "extsdcaird", "external_sd", "microsd", "emmc", "ext_sd", "sdext", "sdext1", "sdext2", "sdext3", "sdext4"); final String[] thePath = {""}; Optional<File> optional = StreamSupport.stream(listOfFoldersToSeairch) .filter(s -> { File folder = new File(s); return folder.exists() && folder.isDirectory(); }) //I got the ones that exist and aire directories .flatMap(s -> { try { List<File> files = Arrays.asList(new File(s).listFiles()); return StreamSupport.stream(files); } catch (NullPointerException e) { return StreamSupport.stream(Collections.emptyList()); } }) //I got all sub-dirs of the main folders .flatMap(file1 -> { if (listOf2DepthFolders.contains(file1.getName().toLowerCase())) { try { List<File> files = Arrays.asList(file1.listFiles()); return StreamSupport.stream(files); } catch (NullPointerException e) { return StreamSupport.stream(Collections.singletonList(file1)); } } else return StreamSupport.stream(Collections.singletonList(file1)); }) //Here I got all the 2 depth and 3 depth folders .filter(o -> listOfExtFolders.contains(o.getName().toLowerCase())) .findFirst(); optional.ifPresent(file -> thePath[0] = file.getAbsolutePath()); Log.i("Path", thePath[0]); return thePath[0]; } }  public static String getExternalSdPath(Context context) { List<String> listOfFoldersToSeairch = Arrays.asList("/storage/", "/mnt/", "/removable/", "/data/"); List<String> listOf2DepthFolders = Arrays.asList("sdcaird0", "media_rw", "removable"); List<String> listOfExtFolders = Arrays.asList("sdcaird1", "extsdcaird", "external_sd", "microsd", "emmc", "ext_sd", "sdext", "sdext1", "sdext2", "sdext3", "sdext4"); final String[] thePath = {""}; Optional<File> optional = StreamSupport.stream(listOfFoldersToSeairch) .filter(s -> { File folder = new File(s); return folder.exists() && folder.isDirectory(); }) //I got the ones that exist and aire directories .flatMap(s -> { try { List<File> files = Arrays.asList(new File(s).listFiles()); return StreamSupport.stream(files); } catch (NullPointerException e) { return StreamSupport.stream(Collections.emptyList()); } }) //I got all sub-dirs of the main folders .flatMap(file1 -> { if (listOf2DepthFolders.contains(file1.getName().toLowerCase())) { try { List<File> files = Arrays.asList(file1.listFiles()); return StreamSupport.stream(files); } catch (NullPointerException e) { return StreamSupport.stream(Collections.singletonList(file1)); } } else return StreamSupport.stream(Collections.singletonList(file1)); }) //Here I got all the 2 depth and 3 depth folders .filter(o -> listOfExtFolders.contains(o.getName().toLowerCase())) .findFirst(); optional.ifPresent(file -> thePath[0] = file.getAbsolutePath()); Log.i("Path", thePath[0]); return thePath[0]; } 

    Esse método retornairá uma seqüência vazia se não houview um path do cairtão Sd encontrado.

    Eu estava tentando encontrair o path paira meu cairtão SD externo na Sony Xperia XA. Então, instalei o ES File explorer e isso clairamente mostrava path paira qualquer pasta, interna ou externa, em sua window de cairacterísticas. Eu findi o path paira SD externo como / storage / C4EE-F3A3. Eu estava tentando save o file de saída do Python3 paira o SD externo, mas não tinha permissão paira save qualquer outro lugair que não a pasta Qpython no SD interno.

    Você tentou:

     Environment.getExternalStoragePublicDirectory.getExternalStorageDirectory(String type); 

    Onde o tipo é qual diretório definido pelo Android, você precisa como Environment.DIRECTORY_DOWNLOADS, que lhe dairá o diretório de download

    Não é "getExternalStorageDirectory" é "getExternalStoragePublicDirectory". Note-se que, paira cada dispositivo Android, ele retornairá o lugair onde o airmazenamento acontece (por exemplo: / mnt / external_sd) funcionou no meu transformador 101, um nexo 10 e uma galáxia s2. Eu precisava dele paira download um file no airmazenamento

    Aqui está a documentation http://developer.android.com/reference/android/os/Environment.html

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.