画像への参照を持つクラスがあります。この画像は、サーバー上またはアプリの描画可能なリソース内にあります。URLの場所または画像ファイルの描画可能な場所を保存する必要があります。これを処理するために、クラスの属性として Uri を使用しています。
まず第一に、これは正しい解決策ですか?次に、Uri にドローアブルへの参照または URL への参照があるかどうかを確認するにはどうすればよいでしょうか? また、ドローアブル リソースの場所を Uri に格納するにはどうすればよいですか?
あなたが提案するのは一つの解決策です。コードを見ないと、これが正しい解決策であるかどうかを判断するのは困難です。
私はこれを自分で試したことはありませんが、どうやら次のようにUriをdrawableに使用できるようです:
Uri uri = Uri.parse("android.resource://your.package.here/drawable/image_name");
InputStream stream = getContentResolver().openInputStream(uri);
これは、URI を String としてSharedPreferencesに格納できる必要があることを意味します。次に画像をロードする必要があるときは、SharedPreferences から URI 文字列を取得します。文字列が「android.resource://」で始まる場合は、コンテンツ リゾルバとBitmapFactory.loadStream()を使用して画像をロードします。文字列が「android.resource://」で始まらない場合は、任意の Http フレームワーク (OkHttp、UrlConnection、Android Async Http など) を使用して、Web 上の画像への入力ストリームを取得します。