2017-08-04 26 views
0

私は、自分の外部ファイルからバックアップファイルを選択して復元する必要があります。Android:ACTION_GET_CONTENTで初期ディレクトリを設定する方法

  1. 私は.sbuの拡張子を書いていたバックアップファイルを与え、私は.sbuファイルをフィルタリングするために、ACTION_GET_CONTENTの意図にファイルエクスプローラを作成する方法を見つけ出すことができませんでした。今のところ私はインテントのタイプを*/*

  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の拡張を書いていたバックアップファイルを与え、私は.sbuファイル

をフィルタリングするために、ACTION_GET_CONTENTの意図にファイルエクスプローラを作成する方法を見つけ出すことができませんでした

これはできません。

は、デフォルトの初期ディレクトリを設定し、私の意図は、デフォルトのファイルエクスプローラを開きます

何もこのためACTION_GET_CONTENTプロトコルではありません。主に、ACTION_GET_CONTENTがファイルやディレクトリに縛られていないためです。

また、デフォルトのファイルエクスプローラはありません。特に、Android 4.3以上の場合は特にありません。ストレージアクセスフレームワークUIはその役割を果たすと主張することができますが、デスクトップOSや関連するプラットフォームからの「ファイルオープン」や「ファイルセーブアズ」ダイアログのAndroidと同じように考える傾向があります。

あなたは、アクションの二つの主要なコースがあります:ファイル、拡張子、ディレクトリの観点で考える

  1. 停止して、コンテンツを考えるにしっかりと動きます。その場合は、Android 4.4以降でuse ACTION_OPEN_DOCUMENTとすることができます。それはEXTRA_INITIAL_URIを提供しています。これはあなたの「デフォルトの初期ディレクトリ」要求を思い起こさせます。

  2. Intentを使用し、代わりにuse a file/directory chooser libraryを使用するという考え方をやめてください。コンテンツはどこから来るのかという点では柔軟性がありませんが、ファイル/ディレクトリの考え方に合っており、期待通りの機能を提供する可能性があります。

+0

私のアプリは機密データを扱い、私は外部のライブラリと一緒に行かない方がよいです。これは私の最初のアプリなので、私はライブラリのこともあまり考えていません。図書館は追加の許可を必要とするか、またはユーザーにセキュリティの懸念があるかどうかこれまでのところ、私のアプリはゼロのパーミッションを使用しなければならず、データのバックアップを実装するために初めて外部ストレージへの書き込み許可を追加する予定です。 –

+0

@Shahid:ライブラリは、セキュリティの観点から見たあなた自身のコードと変わりません。 – CommonsWare

関連する問題