使用Android 6.0.1,API 23,SAF(存儲訪問框架)如何識別您的USB記憶棒?
如何在顯示所有匹配文檔提供程序(包括您的USB記憶棒)的SAF選取器中看到連接到您的Android手機的USB棒?此外如何設置SAF以便在USB便攜式存儲器上創建文件和文件夾?
從SAF-documentation,我想:
public void performFileSearch() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
// in my case, showing only text-files is enough, therefore I guess the type is as follows:
intent.setType("text/plain");
startActivityForResult(intent, READ_REQUEST_CODE);
}
但USB移動存儲不是選擇器的選擇的一部分......
我缺少什麼?是否有示例項目顯示必要的步驟?
@CommonsWare:這裏所需的截圖:
「我缺少什麼?」 - 您缺少顯示「ACTION_OPEN_DOCUMENT」用戶界面中看到的屏幕截圖。 「是否有示例項目顯示必要步驟?」 - [示例應用程序](https://github.com/commonsguy/cw-omnibus/tree/master/Documents/TinyTextEditor)在我的Nexus 5X上使用USB-OTG驅動器可以正常工作,以創建或打開文件。它使用與您擁有的代碼相同的代碼。 – CommonsWare
謝謝 - 我會看看你的項目(很難克隆,很難...)。目前,我還沒有一個工作示例項目,因爲我對Android的SAF世界都很陌生。我最感到困惑的是我的應用程序如何訪問USB驅動器?它是否需要第二個提供SAF-DocumentProvider的應用程序,或者我的應用程序是否也可以這樣做 - 如果是的話,具體如何?我缺少的是如何我的應用程序將識別任何USB驅動器連接。在權限和SAF方法方面究竟有什麼需要? – iKK
「最令我困惑的是我的應用程序如何訪問USB驅動器?」 - 你會在'onActivityResult()'中得到一個'Uri',你可以使用'ContentResolver','DocumentFile'等。「它需要第二個提供SAF-DocumentProvider的應用程序,或者我的應用程序可以做到這一點以及 - 如果是的話,究竟是如何?「 - 由設備提供。如果你的設備沒有這樣做,那麼你的設備製造商或定製ROM開發者就搞砸了。再一次,你的代碼很好。這就是爲什麼我建議你張貼你所看到的截圖。 – CommonsWare