[英]Android canRead() returns false
我收到了這樣的意圖文件:
Uri incoming = getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
File toStream = new File(incoming.getPath());
我無法讀取它,並且toStream.canRead()返回false。
我是從“圖庫”應用程序中的“共享”按鈕收到的,其他應用程序似乎都可以接收到此文件。 有任何想法嗎?
我在Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
遇到了同樣的問題Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
。 返回的路徑類似於“ / document / primary:Download / ac ”。 當我使用該路徑創建File對象時,它顯示的exists()
canRead()
和canRead()
為false
。 我所做的是,走“ : ”之后的路徑,即“ Download / ac ”,然后將其與“ / storage / emulated / 0 / ”合並。 因此,最終路徑為“ / storage / emulated / 0 / Download / ac ”。 與內部存儲一起正常工作。
在僅許可問題的情況下,請使用此功能。
ActivityCompat.requestPermissions(MainActivity.this, new String[]{READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE},THIS_REQUEST_CODE);
並覆蓋這個
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
嘗試為您的應用添加權限READ_EXTERNAL_STORAGE
SDK 23+中存在一個具有權限的新問題,即使您在清單中對其進行了修復,也可能導致讀/寫失敗。 即使您在嘗試讀/寫時第一次遇到它,也會在權限下進行討論。 鏈接到討論它的線程
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.