質問: new Scanner(new FileInputStream(vold_fstab)); // ここでエラーに飛びます。 ...... } catch (FileNotFoundException e) { throw new RuntimeException(e); } finally { if (scanner != null) { scanner.close(); } } ``` SDカードにファイルを保存するため、まずはパスを取得してと言うところで躓いてしまい、先に進めずにいます。 どなたかご教授願えませんでしょうか? 宜しくお願い申し上げます。
回答: > > 2/etc/vold.fstab > > > 古い情報を掘り下げてしまっているのではないでしょうか 当時は正しくても現在は使えないということはAndroidでは多いです 情報は半年以内、それでも古い場合もあります > > SDカードにファイルを保存する際に、保存が行えない現象の発生です。 > > > どうしてもSDカードに保存する必要があるのでしょうか? この機種は比較的新しく内部保存領域もそこそこあり そこに保存するのがいいのではないかと思います 端末外に出したいのであれば、クラウドを使うのが最近の流れ SDカードは面倒ですし汎用性が低いと思っています GoogleのAndroid機はSDカードが使えないですし > > まずはパスを取得してと言うところで躓いてしまい、先に進めずにいます > > > 確かにadbで端末内に入るとマウントされているのでそのようなパスでストレージに入れるのかもしれませんが、それはandroidではやりません SDカードにこだわらないのであれば パスの取得は ``` Environment.getExternalStorageDirectory().getPath() ``` を使って可能です この場合、PermissionはManifestだけでなくRuntimeで許可を得る必要があります > > アプリ上でユーザーに権限を許可してもらうこと > > のことです > > > リンク内容 ただ、Googleとしては ContentProvider を使う方法を勧めていると思います 共有ファイルパスを指定して標準カメラを起動させてストレージに保存する方法は リンク内容 どうしてもSDカードと言う場合は ContentResolver.openInputStream() などでやってみてはどうでしょう リンク内容