私はAndroid開発を試しています。ユーザーが Web サービスでファイルを参照して表示できるようにするアプリを作成しています。これらのファイルは、テキスト、PDF、写真など、何でもかまいません。
以前は、ファイルを外部ストレージにダウンロードしてから、ファイルへIntent.SetDataAndType()
の URL を呼び出して渡していました。これにより、Android デバイスでアプリ ピッカーが表示され、ユーザーはファイルを表示する適切な方法を選択できるようになります。
しかし、私はユーザーにファイルを編集してもらいたくないので、ファイルを見るためだけにファイルをストレージにダウンロードするのはばかげているように思えました。ぶらぶらしたくないファイル。ファイルは URL で取得できるので、それをパラメーターとしてIntent.SetDataAndType()
?
私はそれを試しました。最初の問題は、ファイル名が Web サービス呼び出しの名前であると想定されており、それが MIME タイプよりも重要であるように思われることでした。ダウンロードしようとしていたファイルと同じ名前になるように Web サービスを変更しました。それはその問題を解決しました。
今、ファイルが開かれています。ただし、常に Web ブラウザーで開かれています。Web ブラウザーを選択することはできますが、別のアプリで開いてもらいたいと思います。
私のコードは次のようになります。
Intent i = new Intent(Intent.ActionView);
i.SetDataAndType(Android.Net.Uri.Parse(GetUrlToFile(fileref, fileName)), mimeType);
i.SetFlags(ActivityFlags.GrantReadUriPermission);
i.SetFlags(ActivityFlags.NewTask);
i.SetFlags(ActivityFlags.ClearWhenTaskReset); // so if the app is relaunched, we don't show the display application.
StartActivity(i);
私は Xamarin を使用しているため、コードは C# で書かれていますが、違いがあるとは思いません。
使用してみStartActivity(Intent.CreateChooser(i, "Open me"));
ましたが、それ以上の選択オプションはありませんでした。
これを行う方法について誰かアイデアがありますか?