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

質問編集履歴

4

質問内容をより正確に変更

2019/10/02 06:33

投稿

adk
adk

スコア12

title CHANGED
@@ -1,1 +1,1 @@
1
- パーミッションはついているが内部ストレージファイル保存ない
1
+ 内部ストレージ内のファイルをadb見れない
body CHANGED
@@ -1,34 +1,75 @@
1
1
  いつもお世話になっています。
2
2
 
3
- Android Studioで内部ストレージにtextファイルを保存しようとしていますが、うまくいきません
3
+ Android Studioで内部ストレージにtextファイルを保存しようとしています。
4
4
 
5
- var path = getExternalFilesDir(null)?.getAbsolutePath()
5
+ ボタンを押した時に下記コードのsaveFile、readFileが実行されるようにコードを組んでおり、
6
- val root = File(path)
7
- if (!root.exists()) {
8
- root.getParentFile().mkdir();
6
+ readFileの中身がちゃんと出力されることから内部ストレージへのファイルの保存は出来ているものと思われます。
9
- }
10
7
 
11
- val FileName="test.txt"
12
- val fileContents = "Hello world!"
13
- applicationContext.openFileOutput(FileName, Context.MODE_PRIVATE).use {
8
+ これらのデータは/data/data/パッケージ名/files/内に保存されていると思われるのですが、その中身を見ようとして
14
- it.write(fileContents.toByteArray())
15
- }
16
9
 
10
+ adb shell
11
+ run-as パッケージ名
17
12
 
13
+ とターミナルに打ち込んでも「パッケージ名 is Unknown」となってしまいます。
18
14
 
19
- 現状、公式リファレンスをもと関数を組んでです
15
+ この原因てご存じいらっしゃればお教え願えませんでしょうか。
20
- ContextCompat.checkSelfPermissionの結果は「PackageManager.PERMISSION_GRANTED」です。
21
16
 
22
-
17
+ class MainActivity : AppCompatActivity() {
18
+
19
+ private val fileName = "testfile.txt"
20
+
23
- if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
21
+ override fun onCreate(savedInstanceState: Bundle?) {
22
+ super.onCreate(savedInstanceState)
23
+ setContentView(R.layout.activity_main)
24
+
24
- //パーミッション付与されていない
25
+ // Save file
25
- Toast.makeText(applicationContext, "パーミッションは得られてません", Toast.LENGTH_LONG).show()
26
- RequestStoragePermission();//パーミッションを得るための関数
26
+ buttonSave.setOnClickListener(View.OnClickListener {
27
+
28
+ // get string contents of EditText
29
+ val contents = editText.text.toString()
30
+
31
+ if (!contents.isEmpty()) {
32
+ saveFile(fileName, contents)
33
+ textView.text = getString(R.string.saved)
27
- }else{
34
+ } else {
35
+ textView.text = getString(R.string.no_text)
36
+ }
37
+ })
38
+
39
+ // Read file
40
+ buttonRead.setOnClickListener(View.OnClickListener {
41
+ val str = readFiles(fileName)
42
+ if (str != null) {
43
+ textView.text = str
44
+ } else {
45
+ textView.text = getString(R.string.read_error)
46
+ }
47
+ })
48
+ }
49
+
50
+
51
+ private fun saveFile(file: String, str: String) {
52
+
28
- Toast.makeText(applicationContext, "パーミッションは得られてます", Toast.LENGTH_LONG).show()
53
+ applicationContext.openFileOutput(file, Context.MODE_PRIVATE).use {
54
+ it.write(str.toByteArray())
29
55
  }
30
-
56
+
31
- パーミッションはついているのに内部ストレージには保存されない現象について、
57
+ //File(applicationContext.filesDir, file).writer().use {
32
- 原因がわからなくて困っています。
33
-
34
- このような現象について心当たりのある方はご教授願えませんでしょうか。
58
+ // it.write(str)
59
+ //}
60
+ }
61
+
62
+ private fun readFiles(file: String): String? {
63
+
64
+ // to check whether file exists or not
65
+ val readFile = File(applicationContext.filesDir, file)
66
+
67
+ if(!readFile.exists()){
68
+ Log.d("debug","No file exists")
69
+ return null
70
+ }
71
+ else{
72
+ return readFile.bufferedReader().use(BufferedReader::readText)
73
+ }
74
+ }
75
+ }

3

コードを追加

2019/10/02 06:33

投稿

adk
adk

スコア12

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  Android Studioで内部ストレージにtextファイルを保存しようとしていますが、うまくいきません。
4
4
 
5
+ var path = getExternalFilesDir(null)?.getAbsolutePath()
6
+ val root = File(path)
7
+ if (!root.exists()) {
8
+ root.getParentFile().mkdir();
9
+ }
10
+
11
+ val FileName="test.txt"
12
+ val fileContents = "Hello world!"
13
+ applicationContext.openFileOutput(FileName, Context.MODE_PRIVATE).use {
14
+ it.write(fileContents.toByteArray())
15
+ }
16
+
17
+
18
+
5
19
  現状、公式リファレンスをもとに関数を組んでいるのですが
6
20
  ContextCompat.checkSelfPermissionの結果は「PackageManager.PERMISSION_GRANTED」です。
7
21
 

2

コードを追加

2019/09/28 10:33

投稿

adk
adk

スコア12

title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,15 @@
5
5
  現状、公式リファレンスをもとに関数を組んでいるのですが
6
6
  ContextCompat.checkSelfPermissionの結果は「PackageManager.PERMISSION_GRANTED」です。
7
7
 
8
+
9
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
10
+ //パーミッション付与されていない
11
+ Toast.makeText(applicationContext, "パーミッションは得られてません", Toast.LENGTH_LONG).show()
12
+ RequestStoragePermission();//パーミッションを得るための関数
13
+ }else{
14
+ Toast.makeText(applicationContext, "パーミッションは得られてます", Toast.LENGTH_LONG).show()
15
+ }
16
+
8
17
  パーミッションはついているのに内部ストレージには保存されない現象について、
9
18
  原因がわからなくて困っています。
10
19
 

1

質問内容を変更

2019/09/28 10:27

投稿

adk
adk

スコア12

title CHANGED
@@ -1,1 +1,1 @@
1
- 内部ストレージにtxtファイルを作って保存した
1
+ パーミッションはついているが内部ストレージにファイル保存できな
body CHANGED
@@ -1,31 +1,11 @@
1
1
  いつもお世話になっています。
2
2
 
3
- Android StudioのKotlinでボタンを押した時、
4
- 内部ストレージにtextファイルを保存しようとしているのですが保存されません。
3
+ Android Studioで内部ストレージにtextファイルを保存しようとしていすが、うくいきません。
5
4
 
6
- val FileName="test.txt"
7
- val data:String = "test"
8
- try {
9
- val fos = openFileOutput(FileName,Context.MODE_PRIVATE)
10
- fos.write(data.toByteArray())
5
+ 現状、公式リファレンスをもとに関数を組んでいるのですが
11
- fos.close()
12
- } catch (e: FileNotFoundException){
13
- e.printStackTrace()
14
- }catch (e: NumberFormatException){
15
- e.printStackTrace()
16
- }catch (e: IOException){
17
- e.printStackTrace()
18
- }catch (e: Exception){
19
- e.printStackTrace()
20
- }
21
- Toast.makeText(applicationContext,"保存完了",Toast.LENGTH_LONG).show()
6
+ ContextCompat.checkSelfPermissionの結果は「PackageManager.PERMISSION_GRANTED」です。
22
7
 
23
- AndroidManifestのパーミッションには
8
+ パーミッションはついているの内部ストレージに保存されない現象について、
24
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
25
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
26
- を入れています。
9
+ 原因がわからなく困っています。
27
10
 
28
- コードは通っているため、内部ストレージを書き換えるための権限がついていないのが原因ではと思うのですが、
29
- どうすれば権限が付与できるのかがわかりません。
30
-
31
- すれば内部ストレージ書込みが出来るご教授願えませんでしょうか。
11
+ このよな現象ついて心当たりある方はご教授願えませんでしょうか。