スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

すみません、間違ってました。【Android 6 以降の Permission 問題】


というわけで、ナゼか Android 6 Marshmallow で、cocos2d-x でビルドしたアプリが起動できたり、出来なかったりした問題

どうやら、Android 6 で大きく変わったパーミッションの扱いに問題があった模様。

E libEGL : validate_display:255 error 3008 (EGL_BAD_DISPLAY) とエラーが表示されていたので、描画系の問題かと思っていたのですが、全く関係なかったという。さーせん。

要は、、Android 6 で Dangerous Permission に指定された Permission は、アプリの初回起動時に、ユーザーから能動的に許可を貰わないと起動できなくなるというお話のようです。

で、実際、どうやるのよ、てお話ですが、公式ではこんな感じで解説されてますが、なるほど、分からん! 状態で、1日ネッツ検索した結果、こちら様の解説 が分かりやすかったです。

他の解説サイトだと、Android のバージョン・チェックしてたりするんですが、最新の SDK だと、内部でバージョン・チェックしてるみたいなので、必要ないみたいです。あと、AlertDialog を使って許可を得るやり方が多かったんですが、requestPermissions() を使えば自動で表示されるようで、こちらも必要ないみたいですね。


ユーザーが許可したら、諸々、機能を初期化して使えるようにする、ってのは出来たんだけど、うっかり、すでに許可済みだった場合に、初期化を呼ぶのを忘れてハマる大ばか者。
先ほどの解説サイトの、

if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {

  return;
}


を、こんな感じに

if (checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {

  return;
}else{
  // すでに許可されている
  // 機能の初期化など
}



って感じで良さげでした。

しかし、AVD だと、たまに動作が不安定なときがあるんだよなぁ。
不許可にしてから、設定>アプリ>自作アプリ>許可 で、パーミッションを許可してから、アプリを起動しても、ナゼか許可されてないような動作したり・・・。
電源オフ -> オンで正常な動作に戻るんだけど・・・。


スポンサーサイト

コメント

非公開コメント




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。