ファイル一覧が取得できなくなる。listFiles メソッドで、nullが返るようになった。

久しぶりに android を触る。以前に作ったdeprecated な Galleryを途中まで公開して放置していたんだけど、ちゃんと公開してほしいというリクエストを受けて、久しぶりに android開発環境を触る。
とりあえず以前のプロジェクトをビルドして実行したら、

File dir = new File(path);
File[] fileArray = dir.listFiles(getFilenameFilter());
で、null pointer exception で落ちた。はて?デバッガで追いかけると、パスは実在してるし、ファイルも抽出できないとおかしい。もしや?と思って調べたら、androidのバージョンアップでどうもセキュリティに関する仕様変更があった様子。ストレージへのアクセス権限をちゃんとマニフェストに書かないといけないようだ。eclipseのマニフェストエディタだとこんな感じ。






 xml を直接のぞくとこんな感じ。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
こんな基本的なAPIでも、いままで動いてたプログラムが動かなくなったりするのか。app store でアプリを公開したら、継続的にチェックしないといけないのね。

コメント

  1. はじめまして!
    このトラブルをどうやって回避されたんですか?

    返信削除
  2. はじめまして!
    このトラブルをどうやって回避されたんですか?

    返信削除
    返信
    1. もうずいぶんと前のことですが、上記のとおり、マニフェストに権限を追加して対応したと思いますよ。
      アプリを構築した時点では必要なかった権限ですが、暫く立ってコンパイルしたら動かない。よくよく調べたら、androidのバージョンが挙がって、権限が必要になっていた、と。

      削除

コメントを投稿

このブログの人気の投稿

svnをバッチジョブから実行するときの認証を解決する

Windows Update で Cisco Anyconnect が繋がらなくなる。(Windows8.1)

Windows8.1 から Cisco AnyConnectを使う