2015-10-21 75 views
2

Android 6.0已經改變了管理SD卡安裝的方式,並且沒有讓顯示正確。Sdcard內容在DDMS文件瀏覽器中不可見Android 6.0

直到5.x的,我們可以在層次結構下獲得通過DDMS透視圖(Eclipse中)和SD卡內容

到/ mnt /殼/ ...

現在根據Documentation

/SD卡/

我無法在DDMS下看到此目錄的任何內容,但在PC或其他應用程序(如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 StorageRuntime Permissions其上的相互作用加以限制與存儲設備的。

希望它可以幫助你。

更新

關於如何從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文件管理器,作爲最後的手段,但這只是一個黑客,讓我相信谷歌瘋了。 – Stan

相關問題