2

アプリで生成されたpngファイルを保存するには、Android用のファイル保存ダイアログが必要です。

私は試したIntent intentFileSave = new Intent(Intent.ACTION_PICK);

しかし、これはうまくいきませんでした。ファイルマネージャーがない場合、Androidにはデフォルトの「名前を付けて保存」ダイアログがありますか??

また、 OI File Managerを自分のアプリケーションに統合しようとしました。しかし、 OI File Managerのライセンスがライブラリとしての使用を許可しているかどうかはわかりません。

ユーザーにファイルの場所と名前を選択するように求める他のオプションはありますか??

4

3 に答える 3

3

Androidにはデフォルトの「名前を付けて保存」ダイアログがありますか??

いいえ、ほとんどの場合、アプリは内部ストレージまたは外部ストレージのアプリの部分にファイルを保存するか、Environmentクラスで指定された特定のパブリック ディレクトリにファイルを保存するためです。ACTION_SEND次に、ファイルを使用できる他のサービスとファイルを共有するために使用します。

しかし、OI File Manager のライセンスがライブラリとしての使用を許可しているかどうかはわかりません。

残念なことに、ソースの GitHub リポジトリにライセンスの兆候が見られません。

ユーザーにファイルの場所と名前を選択するように求める他のオプションはありますか?

まったく実行しない (および標準の場所に保存する) 以外に、次のことができます。

  • Intent特定のアクション (例: )を介して OI ファイル マネージャーなどのファイル マネージャー アプリにリンクし、アプリorg.openintents.action.PICK_DIRECTORYがない場合はインストールするようユーザーに促します。

  • ディレクトリやファイルを選択するために他のライブラリを探し回る

  • 自分で作る

于 2012-08-18T20:01:44.333 に答える
0

OIファイルマネージャーは自己完結型のソフトウェアであるため、使用するためにライセンスは必要ありません。OpenIntentsプロジェクトを一種のAPIと考えてください。私の知る限り、APIにはライセンスは必要ありません。

ファイルの保存に関しては、残念ながらOIファイルマネージャーには「名前を付けて保存」オプションがありませんが、簡単に回避できます。ユーザーにアプリで必要なファイル名を入力してもらい、PICK_DIRECTORYインテントを使用して、どこに配置するかをユーザーに指示させます。

于 2012-12-13T11:04:41.813 に答える
0

私も試しましたが、

intent = new Intent(Intent.ACTION_PICK);
intent.setDataAndType(startDir, "vnd.android.cursor.dir/*");

しかし、FileManager、Gallery、Music、Contects など、考えられるすべてのインテントが表示されます。Android が「名前を付け
て保存」機能をサポートするインテントを決定する方法が見つかりませんでした。

だから、私は次の解決策を持っています。ここでは、名前を付けて保存機能をサポートするさまざまなファイル エクスプローラーに対して試行回数を増やしていく必要があります。

int iLoop = 0;
int iTryCount = 2;
for (iLoop = 0; iLoop < iTryCount; iLoop++)
{
    Intent intent = null;

    if (iLoop == 0)
    {
        // OI File Manager
        intent = new Intent(Intent.ACTION_PICK);
        intent.setData(startDir);
        intent.setAction("org.openintents.action.PICK_FILE");
        intent.putExtra("org.openintents.extra.TITLE", "Save As...");
    }
    else if (iLoop == 1)
    {
        // AndExplorer
        intent = new Intent(Intent.ACTION_PICK);
        intent.setDataAndType(startDir,
                "vnd.android.cursor.dir/lysesoft.andexplorer.file");
        intent.putExtra("explorer_title", "Save As...");
        intent.putExtra("browser_filter_extension_whitelist", "*.png");
        intent.putExtra("browser_line", "enabled");
        intent.putExtra("browser_line_textfield", "file1.png");
    }

    if (intent != null)
    {
        try
        {
            // Try to launch activity
            startActivityForResult(intent, REQUEST_SAVE_FILE);

            // TODO: Remove this notification on Publish
            Toast.makeText(m_baseSurfaceView.getContext(),
                    "Try : " + iLoop, Toast.LENGTH_SHORT).show();

            // If everything gone well, then break from here
            // otherwise see catch(..) block
            break;
        }
        catch (Exception e)
        {
            e.printStackTrace();

            // If all tries are done, then conclusion is that,
            // the user needs to install some file-manager application
            // to locate where to save the file
            if (iLoop == iTryCount - 1)
            {
                Toast.makeText(
                        m_baseSurfaceView.getContext(),
                        "Please Install some File Manager"
                                + " application to locate destination.",
                        Toast.LENGTH_LONG).show();
            }
        }
    }
}

提案があればコメントしてください。

于 2012-08-19T09:00:40.900 に答える