簡體   English   中英

Android canRead()返回false

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM