増子良太のブログです

増子良太が書いているブログです。テーマをしぼらず、思いついたものをただひたすら書いていきます。

AndroidでSDカード関連のエラー

      2015/10/16

Android開発雑記です!Android開発雑記です!

大切なことなので2度言ってみました(本当に?)

 

今回は開発している時に謎のエラーが表示され、パニックになってしまったので備忘録です。

もちろん、落ち着いて調べればすぐに答えがわかりますし、

英語を読めればすぐに解決できるのだと思います。

 

でも私のように英語は苦手だし、機種ごとに出るエラーだったらどうしようなど、

エラーが出た瞬間に思考が停止してしまう人向けにお伝えします。

 

Androidアプリ開発時のSDカード関連のエラー

 

今回はAndroidアプリを開発中に起きたSDカード関連のエラーです。

使用している機能としては写真を選ぶ時にカメラで写真を撮るのか、それともライブラリから選択するのかという機能です。

機種によって表示されたりされなかったりします。

 

カメラ起動時にパーミッションがないと表示されるエラー

 

カメラ起動をしようとすると、下記エラーが表示されていました。

 

Permission?権限がない?他の機種では言われなかったよ?とか思いながらエラーログをちゃんと見てみたら、

ちゃんと書いてありました。

 

ストレージへの書き込み権限。

Androidアプリでは基本的にはAPIで提供されている機能であればアプリ内で自由に使うことが可能です。

ただし、悪意のあるアプリを避けるため、Googleではアプリ内で使用する機能を予め宣言しておくことが求められます。

例えばGPSを使用する、アドレス帳へアクセスする、ネットを使用するなど。

宣言はマニュフェストファイルに記述します。

 

パーミッションの一覧は下記ページから確認してみてください。

http://developer.android.com/reference/android/Manifest.permission.html

 

今回は「WRITE_EXTERNAL_STORAGE」を追加することで解決しました。

どうやらカメラを起動するときに保存先を決定しているのですが、

自動的にSDカード内に保存する端末もあるようでカメラ機能を使う時には一緒に宣言しておくのが良いかと思います。

 

カメラ起動時にSDカードがない場合に表示されるエラー

 

こちらも機種によりけり?のようですが、カメラを起動したときにSDカードが入っていない場合、

下記のようなエラーが出力されました。

 

今回はURIがない、つまり保存先が見つかりませんということですね。

もしやと思い、Androidに初期でインストールしてあるカメラアプリを起動したところ、

SDカードが見つかりませんでしたとエラーが表示され、写真を撮ることができませんでした。

このエラーに関しては何も対処しないで起きました。

 

理由は2つあり、1つはSDカードはほぼ全て初期で付いているので、そもそもSDカードを入れずに使うことがない、

もう1つは通常のカメラアプリで写真が撮れない状態なのでアプリ側でも考慮する必要がないと考えました。

 

上記2つのエラーも機種によって出力されたりされなかったり。。。

Androidは難しいですね。

 

 - その他