質問編集履歴

2

メソッド追加

2018/03/30 08:53

投稿

luckyclock
luckyclock

スコア73

test CHANGED
File without changes
test CHANGED
@@ -129,3 +129,85 @@
129
129
  }
130
130
 
131
131
  ```
132
+
133
+
134
+
135
+ copy2ExternalStorageを呼び出すメソッド。
136
+
137
+ テスト端末ではBuild.VERSION.SDK_INTが23未満なのでcheckPermissionは実行
138
+
139
+ しない
140
+
141
+ ```java
142
+
143
+ public void onClickSd(View view) {
144
+
145
+ new AlertDialog.Builder(this)
146
+
147
+ .setTitle("データ保存")
148
+
149
+ .setMessage("外部SDカードに保存しますか?\n※同名のファイルがある場合上書きされます")
150
+
151
+ .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
152
+
153
+ @Override
154
+
155
+ public void onClick(DialogInterface dialog, int which) {
156
+
157
+ // TODO 自動生成されたメソッド・スタブ
158
+
159
+ // Android 6, API 23以上でパーミッシンの確認
160
+
161
+ if (Build.VERSION.SDK_INT >= 23) {
162
+
163
+ checkPermission();
164
+
165
+ } else {
166
+
167
+ List<String> path = getSdCardFilesDirPathListForLollipop(getApplicationContext());
168
+
169
+ if(path.size() >= 1) { //外部ストレージが見つかった
170
+
171
+ for(int i = 0; i < listItems.size(); i++) {
172
+
173
+ if (copy2ExternalStorage(path.get(path.size() - 1), listItems.get(i).getName())){
174
+
175
+ }
176
+
177
+ }
178
+
179
+ }
180
+
181
+ else {
182
+
183
+ Toast.makeText(getApplicationContext(), "コピーできませんでした", Toast.LENGTH_LONG).show();
184
+
185
+ }
186
+
187
+ }
188
+
189
+ }
190
+
191
+ })
192
+
193
+ .setNegativeButton("No", new DialogInterface.OnClickListener() {
194
+
195
+
196
+
197
+ @Override
198
+
199
+ public void onClick(DialogInterface dialog, int which) {
200
+
201
+ // TODO 自動生成されたメソッド・スタブ
202
+
203
+ }
204
+
205
+ })
206
+
207
+ .show();
208
+
209
+ }
210
+
211
+
212
+
213
+ ```

1

追記

2018/03/30 08:53

投稿

luckyclock
luckyclock

スコア73

test CHANGED
File without changes
test CHANGED
@@ -11,6 +11,28 @@
11
11
  まったくもって原因がわかりません。
12
12
 
13
13
  コードに何か問題あるでしょうか?
14
+
15
+
16
+
17
+ 追記
18
+
19
+ 検索していたらFileOutputStreamのflushについて下記のような説明を発見しました。
20
+
21
+ --
22
+
23
+ このストリームの目的の転送先が、基本となるオペレーティングシステムによって提供される抽象化オブジェクト (ファイルなど) である場合、ストリームをフラッシュすることで、それまでにストリームに書き込まれたバイトがオペレーティングシステムに渡されて書き込まれることは保証されますが、ディスクドライブなどの物理デバイスに実際に書き込まれることは保証されません。
24
+
25
+ --
26
+
27
+ 物理デバイスに書き込まれることは保証されないとあります。
28
+
29
+ もしかしてこれが原因?
30
+
31
+ だとしてどのように変更すればよいのでしょうか?
32
+
33
+ 保証されるメソッドがある?
34
+
35
+
14
36
 
15
37
 
16
38