質問編集履歴

2

APIレベル等の追記とコードの修正

2018/12/30 01:09

投稿

akawo
akawo

スコア23

test CHANGED
File without changes
test CHANGED
@@ -10,6 +10,10 @@
10
10
 
11
11
  (Android 7.0, API 22)
12
12
 
13
+ ※Android 7.0はAPI 24なはずなのですが、下図のように表示されています、、、
14
+
15
+ ![イメージ説明](bb7aede27cb23615a19bc8d051ff626f.png)
16
+
13
17
 
14
18
 
15
19
 
@@ -30,6 +34,8 @@
30
34
 
31
35
  class MainActivity : AppCompatActivity() {
32
36
 
37
+ val REQUEST_PERMISSION = 1000
38
+
33
39
 
34
40
 
35
41
  override fun onCreate(savedInstanceState: Bundle?) {
@@ -40,46 +46,104 @@
40
46
 
41
47
 
42
48
 
43
- button.setOnClickListener {
49
+ button.setOnClickListener {
50
+
51
+
52
+
44
-
53
+ if (ActivityCompat.checkSelfPermission(this,
54
+
55
+ Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
56
+
57
+
58
+
59
+
60
+
45
- val calendar = Calendar.getInstance()
61
+ val calendar = Calendar.getInstance()
46
-
62
+
47
- val filenametest = "RC_" + (android.text.format.DateFormat.format("yyyyMMdd_HHmmss", calendar)).toString() + ".jpg"
63
+ val filenametest = "RC_" + (android.text.format.DateFormat.format("yyyyMMdd_HHmmss", calendar)).toString() + ".jpg"
48
-
49
-
50
-
51
-
52
-
64
+
65
+
66
+
67
+
68
+
53
- // 読み書きするファイル名を指定
69
+ // 読み書きするファイル名を指定
54
-
70
+
55
- val file = File(Environment.getExternalStorageDirectory().path + "/DCIM/result_capture/",filenametest)
71
+ val file = File(Environment.getExternalStorageDirectory().path + "/DCIM/result_capture/", filenametest)
56
-
57
-
58
-
72
+
73
+
74
+
59
- // 指定したファイル名が無ければ作成する。
75
+ // 指定したファイル名が無ければ作成する。
60
-
76
+
61
- file.parentFile.mkdir()
77
+ file.parentFile.mkdir()
62
-
63
-
64
-
78
+
79
+
80
+
65
- saveCapture(findViewById(android.R.id.content), file)
81
+ saveCapture(findViewById(android.R.id.content), file)
66
-
67
-
68
-
82
+
83
+
84
+
69
- toast("画像を保存しました")
85
+ toast("画像を保存しました")
86
+
87
+
88
+
70
-
89
+ } else {
90
+
71
-
91
+ requestLocationPermission()
92
+
93
+ }// 拒否していた場合
94
+
95
+
96
+
97
+ }
72
98
 
73
99
  }
74
100
 
101
+
102
+
103
+ // 許可を求める
104
+
105
+ private fun requestLocationPermission() {
106
+
107
+
108
+
109
+ if (ActivityCompat.shouldShowRequestPermissionRationale(this,
110
+
111
+ Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
112
+
113
+ ActivityCompat.requestPermissions(this,
114
+
115
+ arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_PERMISSION)
116
+
117
+
118
+
119
+ } else {
120
+
121
+ val toast = Toast.makeText(this, "アプリ実行に許可が必要です", Toast.LENGTH_SHORT)
122
+
123
+ toast.show()
124
+
125
+
126
+
127
+ ActivityCompat.requestPermissions(this,
128
+
129
+ arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
130
+
131
+ REQUEST_PERMISSION)
132
+
133
+
134
+
75
135
  }
76
136
 
77
-
78
-
79
137
  }
80
138
 
81
139
 
82
140
 
141
+ }
142
+
143
+
144
+
145
+
146
+
83
147
  fun saveCapture(view: View, file: File) {
84
148
 
85
149
  // キャプチャを撮る

1

使用しているandroidのバージョンを追記しました。

2018/12/30 01:09

投稿

akawo
akawo

スコア23

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,12 @@
7
7
  ボタンをクリックすると画面キャプチャした画像をDCIMに作製したフォルダに保存するテストを行っていますが、
8
8
 
9
9
  なぜかうまくいきません。エラーも出ていないという状態になります。
10
+
11
+ (Android 7.0, API 22)
12
+
13
+
14
+
15
+
10
16
 
11
17
 
12
18