LoginSignup
2
0

More than 3 years have passed since last update.

checkSelfPermissionがPERMISSION_DENIEDしか返してくれない罠を踏み抜いた話

Posted at

すでにリリース済みのアプリに対して某広告系ライブラリを入れた時に突如パーミッション関係が軒並みDENIEDを返すようになりパニックになったので自分のための備忘録として。

現象

checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)

もしくはその後、requestPermissionをコールした後にonRequestPermissionsResultで戻ってきた後の第三引数が全部PERMISSION_DENIEDになる。
ちなみに勿論パーミッションは許可された状態で起きる。
今回の場合はすでにリリース済みのアプリで、このあたりは元々元気に動いていたのに急にスンッ・・・とおかしくなったので事態の把握は楽でした。

原因と対応

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

AndroidManifest.xml で定義しているpermissionは上記のような定義だったのだけれど・・・
Merged Manifestのほうで確認してみると
2020-03-22_12h27_01.png

/(^o^)\・・・
そう。ライブラリ側でuses-permissionmaxSdkVersionが有り難くも設定されていたのでそもそもmaxSdkVersionを超えるSDKバージョンの場合はuses-permissionの定義は無かったことになる。
すなわちcheckSelfPermissionがDENIEDなのは当然の結果だった・・・

ということで、

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace" />

node="replase"指定を追加して、有り難く設定されているライブラリ側のmaxSdkVersionは無視させて頂くことにした。

教訓

新しいライブラリをリリース済みアプリに入れる時は、Merged Manifestがどうなっているかちゃんとチェックしようね!ぜったいだよ!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0