2017-08-04 589 views
0

我需要我的用戶從他們的外部文件中選擇一個備份文件(以進行還原),並且有兩個問題。Android:如何在ACTION_GET_CONTENT中設置初始目錄

  1. 我給我寫.sbu的擴展備份文件,我無法弄清楚如何使ACTION_GET_CONTENT意圖的文件瀏覽器,僅過濾.sbu文件。儘管如此,我將意圖類型設置爲*/*

  2. 另一個更重要的問題是,當我的INTENT打開默認文件瀏覽器時,我請求幫助它設置默認初始目錄。以下是我目前的代碼,但似乎不起作用。

    Intent ioIntent = new Intent(Intent.ACTION_GET_CONTENT); 
    ioIntent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/simple_information_manager/backup")), "*/*"); 
    ioIntent.addCategory(Intent.CATEGORY_OPENABLE); 
    ioIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
    
    if (ioIntent.resolveActivityInfo(parent.getPackageManager(), 0) != null) { 
        doExit = false; 
        startActivityForResult(Intent.createChooser(ioIntent, getString(R.string.choose_file)), RESTORE); 
    } else { 
        Snackbar.make(listView.getRootView(), "Directory chooser not available", Snackbar.LENGTH_LONG).show(); 
    } 
    

回答

0

我給我寫.sbu的擴展備份文件,我無法弄清楚如何使ACTION_GET_CONTENT意圖的文件瀏覽器,只能過濾.sbu文件

這是不可能的。

集時我的意圖打開默認的文件瀏覽器

沒有什麼在ACTION_GET_CONTENT協議這個默認的初始目錄。很大程度上,這是因爲ACTION_GET_CONTENT沒有綁定到文件和目錄。

此外,沒有「默認文件瀏覽器」,特別是在Android 4.3及更早版本上。您可以爭辯說Storage Access Framework UI填補了這一角色,但我傾向於將其更多地視爲與桌面操作系統和相關平臺的「文件打開」和「文件保存」對話框相當的Android。

你有行動的兩個主要課程:

  1. 停止在文件,擴展名,目錄的角度思考,並堅決進入思考的內容。在這種情況下,你可以在Android 4.4+上使用use ACTION_OPEN_DOCUMENT。它提供EXTRA_INITIAL_URI,這讓人想起你的「默認初始目錄」請求。

  2. 停止考慮使用Intent,而不是use a file/directory chooser library。那些內容來源不靈活,但它們更適合您的文件/目錄思維模式,並且可能提供更符合您的期望的功能。

+0

我的應用處理敏感數據,我寧願不去與外部庫。我對圖書館沒有太多的想法,因爲這是我的第一個應用程序。圖書館是否需要額外的權限或在任何程度上都是用戶的安全問題?到目前爲止,我的應用程序必須使用Zero權限,並且我將首次添加外部存儲寫入權限以實現備份數據。 –

+0

@Shahid:從安全的角度來看,一個庫與你自己的代碼沒有區別。 – CommonsWare