2017-04-11 125 views
1

我已經編寫了一個CSV編程,我想讓用戶能夠在他們已經安裝在他們的設備上的應用程序中打開CSV。以編程方式在Android中打開一個CSV文件

我有以下幾點:

File file = new File(Environment.getExternalStorageDirectory(), "My_App_Dir/" + fileName); 
Intent csvIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 
csvIntent.addCategory(Intent.CATEGORY_OPENABLE); 
csvIntent.setDataAndType(FileProvider.getUriForFile(getActivity(), getActivity().getApplicationContext().getPackageName() + ".provider", finalFile), "text/csv"); 
csvIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
csvIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getActivity().startActivity(csvIntent); 

當我運行上面的代碼,我得到的是最近的文件瀏覽器中(不顯示文件),而不是應用程序選擇屏幕允許用戶選擇他們想用來打開文件的應用程序。

如果我去我的設備文件瀏覽器應用程序(固體瀏覽器),並選擇應用程序,它提供了一個能夠支持CSV(Google文檔或Excel)的應用程序列表。

感謝您的幫助,您可以提供

回答

1

使用ACTION_VIEWACTION_OPEN_DOCUMENT相當於桌面操作系統或Web瀏覽器的「文件打開」對話框。

+0

謝謝,我已經給出了一個嘗試,但它現在拋出一個ActivityNotFoundException。 'android.content.ActivityNotFoundException:找不到處理Intent的活動{act = android.intent.action.VIEW cat = [android.intent.category.OPENABLE] dat = content://com.my_company.my_app.provider/external_files/ My_App_Dir/11042017_233342_resultset.csv typ = text/csv flg = 0x10000001}' – Boardy

+0

Ah對它進行了排序,完成了你所做的,但我需要刪除'addCategory(Intent.CATEGORY_OPENABLE)'。感謝您的幫助 – Boardy

+0

@Boardy:哦,是的,對,對不起,錯過了。 'ACTION_VIEW'通常只用於默認類別,並且在調用'startActivity()'時默認添加。 – CommonsWare