質問編集履歴
2
コードを<code>タブ内に書き直しました。
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
|
-
|
6
|
+
FetchPicData fetchPicData = new FetchPicData();
|
9
|
-
|
7
|
+
fetchPicData.start();
|
10
8
|
|
11
|
-
|
9
|
+
while(true){
|
12
|
-
|
10
|
+
try{
|
13
|
-
|
11
|
+
Thread.sleep(100L);
|
14
|
-
|
12
|
+
} catch (InterruptedException e){
|
15
|
-
|
13
|
+
System.out.println(e.getMessage());
|
16
|
-
|
14
|
+
}
|
17
|
-
|
15
|
+
if(fetchPicData.isFinished()){
|
18
|
-
|
16
|
+
break;
|
19
|
-
|
17
|
+
}
|
20
|
-
|
18
|
+
}
|
21
|
-
|
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
|
-
|
49
|
+
try {
|
52
|
-
|
50
|
+
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), Uri.parse(uris[i]));
|
53
|
-
|
51
|
+
imageView.setImageBitmap(bitmap);
|
54
|
-
|
52
|
+
}catch (IOException e) {
|
55
|
-
|
53
|
+
e.printStackTrace();
|
56
|
-
|
54
|
+
}
|
57
55
|
```
|
58
56
|
|
59
57
|
となっており(urisはString[]型でURIを表す文字列を格納しています)、エラーの文は
|
1
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
|
-
|
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
|
-
|
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とあったので外部ストレージの書き込み権限を付与するようにしてみたのですがうまくいかず、エラーの文で検索をかけてみましたが解決することができませんでした。
|