0
私は、ファイルを選択してそのファイルのパスを取得した後に処理するためのアプリケーションを開発しています。このようなパスを取得するコードを書いています。Android - ファイルを選択して絶対パスを取得
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (requestCode == 0)
{
if (resultCode == Result.Ok)
{
string uri = data.DataString;
System.Uri myUri = new System.Uri(uri, System.UriKind.Absolute);
Android.Net.Uri uris = Android.Net.Uri.FromParts(data.Scheme, myUri.LocalPath, myUri.Fragment);
// string a= myUri.LocalPath;
System.IO.Stream input= ContentResolver.OpenInputStream(uris);
string uri = data.DataString;
ZipLogic.Unzip(uri);
}
}
}
し、その結果、このようなパターンである:結果のためのアクティビティで
private void OpenFile()
{
Intent i = new Intent(Intent.ActionGetContent);
i.SetType("application/zip");
StartActivityForResult(i,0);
}
Iパスを抽出しています次のように
content://com.android.externalstorage.documents/document/xxxx-83BB%3xxx%2Fxxx.zip
しかし、このパスからアクセスしようとしましたDirectoryNotFound例外 このパスをストリームとして開く方法を解決できません。
したがって、ファイルディレクトリが見つかりません。ディレクトリが存在するかどうかを確認してから、読み込みます。 – RameshJaga
はい、存在します!問題は、ファイルを選択したときにのみパスを受け取るため、Uriに関連するものです。 – Technacron
これをチェックしてくださいhttps://stackoverflow.com/a/20559175/2556660 – RameshJaga