質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

2回答

4281閲覧

マニフェストにパーミッションを記述してあるのに無いと言われエラーになる

universegift77

総合スコア12

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2021/07/15 12:41

編集2021/07/16 08:42

以前まで動いていたコードが突然エラーになります。
動いていた状態までロールバックして完全に全部のファイルが一致しているはずなのに、です。
正直全く解決の糸口がつかめないので「こうしてみたら?」「ここはどうなってる?」みたいなアドバイスをください。

まず、MainActicity.ktにて

Missing permissions required by FusedLocationProviderClient.getLastLocation: android.permission.ACCESS_COARSE_LOCATION or android.permission.ACCESS_FINE_LOCATION

というエラーが出てきます。
quick fixするとマニフェストファイルにパーミッションの記述が追加されるのですが、どれだけ追加されてもエラーは消えません。
現状のマニフェストは以下です。(先述したように、このマニフェストできちんと動作していたこともあったのでファイルには問題はないと思います)

AndroidManifest.xml

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.diceroller"> 4 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 5 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 6 7 <application 8 android:allowBackup="true" 9 android:icon="@mipmap/ic_launcher" 10 android:label="@string/app_name" 11 android:roundIcon="@mipmap/ic_launcher_round" 12 android:supportsRtl="true" 13 android:theme="@style/Theme.DiceRoller"> 14 <activity android:name=".MainActivity"> 15 <intent-filter> 16 <action android:name="android.intent.action.MAIN" /> 17 18 <category android:name="android.intent.category.LAUNCHER" /> 19 </intent-filter> 20 </activity> 21 </application> 22 23</manifest>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/07/15 13:26

ActivityCompat.requestPermissions の結果が返る前に getLastLocation してるとか?
universegift77

2021/07/15 13:45

おそらくそれは無いと思うのですが、kotlin初心者なのでもしかしたら私のコードがおかしいのかもしれないです MainActivity.ktの一部を追記したのでパーミッションリクエストの結果を待たずに位置情報関係の処理が走ってしまっていないか確認していただけないでしょうか コードの解説としては まずパーミッションが許可されているか確認する 許可されていなければパーミッションリクエストをする 許可されていれば位置情報を取得して更新する という感じです。読みづらいコードで申し訳ないです
hoshi-takanori

2021/07/15 15:08

そのコードだと許可を得られない場合は無限ループになりますね。requestPermissions したらいったん処理を OS に戻して、onRequestPermissionsResult で結果を受け取ってから位置情報の処理を行う必要があるはず…。
universegift77

2021/07/16 04:56

ほしたかのりさん 無限ループにして位置情報を許可するまで次の処理にいかないようにしています。 このコードで位置情報が許可されるまで位置情報関係の処理は走らないと思っていたのですが、この認識は間違いでしょうか? override fun onRequestPermissionsResultにしか位置情報関係の処理は書けないということですか? jimbeさん 一応確認しましたが、やはり問題点がよく分からず、、 なにより、以前は全く同じコードで動作したんですよね。確実に動作したところでコミットしたし、そのときはandroidstudioでなんの赤エラーも表示されていませんでした
jimbe

2021/07/16 09:52

動いていたとしても、少なくともドキュメントのサンプルとは違うやり方となっていますね。 許可されるまでループし続けるというのは、少なくとも動作するか保証はないレベルのような気がします。 また、androidのあるバージョンからは「許可しない」を選択し続けるとやがてダイアログが出なくなり自動的に「許可しない」を選択されたものとして扱われるようになるようです。 そうなると無限ループ構造ではマズイのでは無いでしょうか。 構造をドキュメントに合わせては如何でしょう。
guest

回答2

0

おそらく Android Studio はファイルの変更差分を見ており、変更がなければファイルを再読み込みしてビルド、変更がなければ以前生成したキャッシュを利用してビルドするような仕組みになっているのではないかなと思います(あくまでも推測ですが)

ロールバックした際に AndroidManifest.xml が変更されたことを Android Studio が通常は検知してファイルを再読み込みしてビルドし直します。しかし今回はなぜか検知できず以前生成したキャッシュを利用してビルドしてしまったため変更内容が反映されなかったのではないかなと思います。

このような不具合は開発を進めていると遭遇することがままあります。
そういった場合はプロジェクトを Build → Rebuild Project からリビルドするなり、 File → Invalid Caches / Restart... からキャッシュを消して再起動するしかないかなと思います。

投稿2021/07/23 13:32

kaleidot725

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

さきほどandroid-studioを再起動したら直りました。
それ以前にも何度か再起動は試したので、「再起動で直る」という単純なものでもないと思います。
android-studioの不具合なのだと思います。以前も同じことがあったので、誰かandroid studioの不具合について情報を持っている方がいれば教えて下さい

投稿2021/07/16 08:46

universegift77

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問