2

アプリで深刻な問題が発生しています。android.permission.ACCESS_COARSE_LOCATION放送受信機で許可を使用すると、完全に動作します。

ただし、一定の時間が経過すると (これはランダムなようです)、アプリがクラッシュし、次の出力が表示されます。

SecurityException ユーザー 10086 も現在のプロセスも権限 android.permission.ACCESS_COARSE_LOCATION を持っていません

マニフェストを使用して許可を含め、許可をブロードキャストする<uses-permission etc />ときにそれをより具体的にする試みとしてsendOrderedBroadcast、ブロードキャストを受信できるようにブロードキャストレシーバーに許可を与えました。

しかし、しばらくすると、コードの 2 行目で SecurityException がスローされます。

TelephonyManager Tel = (TelephonyManager) vb.getPsrC()
            .getSystemService(Activity.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) Tel.getCellLocation();

このクラッシュは、Froyo を実行しているテスト デバイスでのみ発生するようです。

Gingerbread を実行しているデバイスでは、アプリはより少ないメモリを使用してサービスを再起動するだけで、何もしません。これらの問題は関連しているか、またはアプリのクラッシュと相互に排他的なセキュリティ例外です。

4

1 に答える 1

1

さて、犯人はメモリリークであることがわかりました。GREF が 2001 年に達したとき、アプリはクラッシュし、基本的に空になり (より適切なフレーズがないため)、許可が与えられていないとアプリに認識させました。phonelistener をサービスに移動して修正しました。

于 2011-12-06T05:44:57.963 に答える