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

質問編集履歴

2

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

2018/12/30 01:09

投稿

akawo
akawo

スコア23

title CHANGED
File without changes
body CHANGED
@@ -4,6 +4,8 @@
4
4
  ボタンをクリックすると画面キャプチャした画像をDCIMに作製したフォルダに保存するテストを行っていますが、
5
5
  なぜかうまくいきません。エラーも出ていないという状態になります。
6
6
  (Android 7.0, API 22)
7
+ ※Android 7.0はAPI 24なはずなのですが、下図のように表示されています、、、
8
+ ![イメージ説明](bb7aede27cb23615a19bc8d051ff626f.png)
7
9
 
8
10
 
9
11
 
@@ -14,31 +16,61 @@
14
16
  ```activity_main.xml
15
17
 
16
18
  class MainActivity : AppCompatActivity() {
19
+ val REQUEST_PERMISSION = 1000
17
20
 
18
21
  override fun onCreate(savedInstanceState: Bundle?) {
19
22
  super.onCreate(savedInstanceState)
20
23
  setContentView(R.layout.activity_main)
21
24
 
22
- button.setOnClickListener {
25
+ button.setOnClickListener {
23
- val calendar = Calendar.getInstance()
24
- val filenametest = "RC_" + (android.text.format.DateFormat.format("yyyyMMdd_HHmmss", calendar)).toString() + ".jpg"
25
26
 
27
+ if (ActivityCompat.checkSelfPermission(this,
28
+ Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
26
29
 
27
- // 読み書きするファイル名を指定
28
- val file = File(Environment.getExternalStorageDirectory().path + "/DCIM/result_capture/",filenametest)
29
-
30
- // 指定したファイル名が無ければ作成する。
31
- file.parentFile.mkdir()
32
30
 
33
- saveCapture(findViewById(android.R.id.content), file)
31
+ val calendar = Calendar.getInstance()
32
+ val filenametest = "RC_" + (android.text.format.DateFormat.format("yyyyMMdd_HHmmss", calendar)).toString() + ".jpg"
34
33
 
34
+
35
+ // 読み書きするファイル名を指定
36
+ val file = File(Environment.getExternalStorageDirectory().path + "/DCIM/result_capture/", filenametest)
37
+
38
+ // 指定したファイル名が無ければ作成する。
39
+ file.parentFile.mkdir()
40
+
41
+ saveCapture(findViewById(android.R.id.content), file)
42
+
35
- toast("画像を保存しました")
43
+ toast("画像を保存しました")
44
+
36
-
45
+ } else {
46
+ requestLocationPermission()
47
+ }// 拒否していた場合
48
+
49
+ }
37
50
  }
51
+
52
+ // 許可を求める
53
+ private fun requestLocationPermission() {
54
+
55
+ if (ActivityCompat.shouldShowRequestPermissionRationale(this,
56
+ Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
57
+ ActivityCompat.requestPermissions(this,
58
+ arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_PERMISSION)
59
+
60
+ } else {
61
+ val toast = Toast.makeText(this, "アプリ実行に許可が必要です", Toast.LENGTH_SHORT)
62
+ toast.show()
63
+
64
+ ActivityCompat.requestPermissions(this,
65
+ arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
66
+ REQUEST_PERMISSION)
67
+
38
68
  }
39
-
40
69
  }
41
70
 
71
+ }
72
+
73
+
42
74
  fun saveCapture(view: View, file: File) {
43
75
  // キャプチャを撮る
44
76
 

1

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

2018/12/30 01:09

投稿

akawo
akawo

スコア23

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,10 @@
3
3
  【現状】
4
4
  ボタンをクリックすると画面キャプチャした画像をDCIMに作製したフォルダに保存するテストを行っていますが、
5
5
  なぜかうまくいきません。エラーも出ていないという状態になります。
6
+ (Android 7.0, API 22)
6
7
 
8
+
9
+
7
10
  【コード】
8
11
  ※manifestには<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />を追加済み
9
12