2017-09-15 101 views
1

我需要讓用戶從我的應用程序的本地存儲中選擇一個文件。現在我使用INTENT.ACTION_GET_CONTENT來讓用戶選擇文件,但它也提供了從雲中選擇URI的選項。獲取URI文件後,我將其視爲本地文件並執行各種操作(包括提取文件擴展名)。我如何讓用戶只選擇本地文件?如何讓用戶在Android中使用Intent選擇本地文件?

else if(menuItem.getItemId() == R.id.action_import_from_file){ 
    Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
    i.setType("*/*"); 
    startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 
} 

回答

2

請嘗試使用Intent.EXTRA_LOCAL_ONLY
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
如果庫應用程序在您的設備支持它,只有本地存儲中的文件將被顯示。如果圖庫應用程序不支持上述意圖,則可以在檢查圖庫應用程序返回的文件路徑的文件長度後向用戶顯示錯誤消息。

1

嘗試這種使用setType()方法,並指定由用戶選擇什麼文件類型

Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
i.setType("application/pdf|application/x-excel|text/csv"); 
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 

你也可以使用MIME類型的數組像下面的代碼

Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
String[] types = {"application/x-excel/*", "application/csv/*",}; 
i.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes); 
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 
+0

xlsx和csv文件是根據應用程序?我從Excel文件,CSV文件等導入數據集。 – ColonD

+0

@ColonD check updated ans –

相關問題