質問するログイン新規登録

質問編集履歴

2

コードを<code>タブ内に書き直しました。

2021/03/08 03:50

投稿

kurobaron
kurobaron

スコア3

title CHANGED
File without changes
body CHANGED
@@ -1,24 +1,22 @@
1
- (ご指摘を受け修正致しました。失礼致しました。)
2
-
3
1
  現在Androidアプリの開発をしており、MainActivityではないページでギャラリーから画像を選択してそれらのURIをRoomデータベースに保存し、MainActivityのonCreateやonStartのタイミングでRoomデータベースから保存されているURIを取得してそれが表す画像をimageViewに設定する機能を実現したいと考えています。
4
2
  しかしURIをデータベースに保存するところ、データベースからURIを取得するところまでは上手くいくのですが、取得したURIからimageViewに画像を設定するところでエラーが発生してしまいます。
5
3
   データベースからURIを取得するコードは
6
4
 
7
5
  ```Java
8
- FetchPicData fetchPicData = new FetchPicData();
6
+ FetchPicData fetchPicData = new FetchPicData();
9
- fetchPicData.start();
7
+ fetchPicData.start();
10
8
 
11
- while(true){
9
+ while(true){
12
- try{
10
+ try{
13
- Thread.sleep(100L);
11
+ Thread.sleep(100L);
14
- } catch (InterruptedException e){
12
+ } catch (InterruptedException e){
15
- System.out.println(e.getMessage());
13
+ System.out.println(e.getMessage());
16
- }
14
+ }
17
- if(fetchPicData.isFinished()){
15
+ if(fetchPicData.isFinished()){
18
- break;
16
+ break;
19
- }
17
+ }
20
- }
18
+ }
21
- String[] uris = fetchPicData.getUris();
19
+ String[] uris = fetchPicData.getUris();
22
20
  ```
23
21
      
24
22
  で、fetchPicDataクラスが
@@ -48,12 +46,12 @@
48
46
  となっており、取得したURIからimageViewに画像を設定する箇所のコードは
49
47
 
50
48
  ```Java
51
- try {
49
+ try {
52
-  Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), Uri.parse(uris[i]));
50
+ Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), Uri.parse(uris[i]));
53
- imageView.setImageBitmap(bitmap);
51
+ imageView.setImageBitmap(bitmap);
54
- }catch (IOException e) {
52
+ }catch (IOException e) {
55
- e.printStackTrace();
53
+ e.printStackTrace();
56
- }
54
+ }
57
55
  ```
58
56
 
59
57
  となっており(urisはString[]型でURIを表す文字列を格納しています)、エラーの文は

1

2021/03/08 03:50

投稿

kurobaron
kurobaron

スコア3

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,11 @@
1
+ (ご指摘を受け修正致しました。失礼致しました。)
2
+
1
3
  現在Androidアプリの開発をしており、MainActivityではないページでギャラリーから画像を選択してそれらのURIをRoomデータベースに保存し、MainActivityのonCreateやonStartのタイミングでRoomデータベースから保存されているURIを取得してそれが表す画像をimageViewに設定する機能を実現したいと考えています。
2
4
  しかしURIをデータベースに保存するところ、データベースからURIを取得するところまでは上手くいくのですが、取得したURIからimageViewに画像を設定するところでエラーが発生してしまいます。
3
5
   データベースからURIを取得するコードは
4
6
 
7
+ ```Java
5
-     FetchPicData fetchPicData = new FetchPicData();
8
+ FetchPicData fetchPicData = new FetchPicData();
6
9
  fetchPicData.start();
7
10
 
8
11
  while(true){
@@ -16,9 +19,11 @@
16
19
  }
17
20
  }
18
21
  String[] uris = fetchPicData.getUris();
19
-
22
+ ```
23
+     
20
24
  で、fetchPicDataクラスが
21
25
 
26
+ ```Java
22
27
  public class FetchPicData extends Thread {
23
28
  private String[] uris;
24
29
  private boolean finished;
@@ -38,18 +43,22 @@
38
43
  return finished;
39
44
  }
40
45
  }
46
+ ```
41
47
 
42
48
  となっており、取得したURIからimageViewに画像を設定する箇所のコードは
43
49
 
50
+ ```Java
44
-        try {
51
+ try {
45
52
   Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), Uri.parse(uris[i]));
46
53
  imageView.setImageBitmap(bitmap);
47
54
  }catch (IOException e) {
48
55
  e.printStackTrace();
49
56
  }
57
+ ```
50
58
 
51
59
  となっており(urisはString[]型でURIを表す文字列を格納しています)、エラーの文は
52
60
 
61
+ ```
53
62
  /com.example.piccapture E/AndroidRuntime: FATAL EXCEPTION: main
54
63
  Process: com.example.piccapture, PID: 31922
55
64
  java.lang.SecurityException: Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord{ecaa030 31922:com.example.piccapture/u0a148} (pid=31922, uid=10148) that is not exported from UID 10117
@@ -86,6 +95,7 @@
86
95
  at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2078)
87
96
  at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2741)
88
97
  at android.os.Binder.execTransactInternal(Binder.java:1021)
98
+ ```
89
99
 
90
100
  となっています。(piccaptureはアプリ名です)
91
101
   Permission Denialとあったので外部ストレージの書き込み権限を付与するようにしてみたのですがうまくいかず、エラーの文で検索をかけてみましたが解決することができませんでした。