質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

1回答

1511閲覧

Xamarin.Androidで画像ファイルのURIを取得したい

mi-san

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2022/01/21 02:09

編集2022/02/05 23:02

1,2日間ネットの情報を調べて試してもだめだったためここで質問させてください。

現在Visual Studioを使用し、Xamarin.Androidでのアプリ開発を行っています。

内容としては、Windowsアプリ(C#)の内容をAndroidアプリにしたいと考えております。
そしてその中にUriを引数として画像をだすAPIを使用したいと思っています。

Windowsアプリでは、ソリューションがあるフォルダ内に置いている画像ファイルを参照するためのURIはそのままファイルのパスをUriに代入すればできました。

しかし、Androidではパスを指定するのに実装環境であるPCのフォルダを指定するのではなく
Androidで実行する際に画像があるパスを書かなくてはいけません。

※画像を出す方法はほかにもありますが、今回はUriを引数としたAPIを使用するのが目的です。

また「Uri.Parse()」がアクセスできない保護レベルになっていて直接変換することができなかったため、一度文字列にしてからUri形式にしてます。保護レベルになっている原因などおわかりでしたらご教授いただけたら幸いです。

参考にさせていただけるかもしれないのでJavaでのUri取得の方法があればそちらもご教授お願い致します。

ーUri取得で試してみたことー

画像はソリューション内のResourcesフォルダ内のdrawable内にある001.pngです

string uri;
Uri uri1;

uri = "android.resource://" + PackageName + "/drawable/" + Resources.GetIdentifier("001", "drawable", PackageName); uri1 = new Uri(uri);

Resources.GetIdentifier("001", "drawable", PackageName);が数字に変換されていたので認識はしている?

uri = "android.resource://" + PackageName + "/drawable/001"; uri1 = new Uri(uri);

uri1 = new Uri((@"..\drawable\001.png", UriKind.Relative).ToString());

①②③どれもうまくいきませんでした。もしUri取得にほかの方法などあればご教授いただけたら幸いです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2022/01/21 02:39

Android ではアプリ内の画像はファイルパスではなく整数の id で管理しており、画面の解像度ごとに別だったり、そもそも独立したファイルになってない可能性もあります。
mi-san

2022/01/21 02:51

ありがとうございます。整数の idからUriに変換する方法などはないのでしょうか。
hoshi-takanori

2022/01/21 03:35

一応②の uri = "android.resource://" + PackageName + "/drawable/001"; という表記もあることはあるようですが、その URI を使えるところは限られるのではないかと…。
guest

回答1

0

①の方法で、以下のように修正を行えば表示されました。

C#

1// Resources/drawable/Hoge.pngとなるように画像を格納した場合、 2// uriString1,2の両方で実行可能 3var uriString1 = $"android.resource://{PackageName}/{Resources.GetIdentifier("Hoge".ToLower(), nameof(Resource.Drawable).ToLower(), PackageName)}"; 4var uri1 = Android.Net.Uri.Parse(uriString1); 5var uriString2 = $"android.resource://{PackageName}/{Resources.GetIdentifier("hoge", "drawable", PackageName)}"; 6var uri2 = Android.Net.Uri.Parse(uriString2);

Resources.GetIdentifier() returning 0 for layout (Android)

投稿2022/02/05 14:02

takapi_cs

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問