デバイスカメラを使用して画像を撮影するMAFアプリケーションがあります。私はそれがで墜落したS6実行しているAPI 23、上のそれをテストするまで、すべてが正常に働いていた:Oracle MAFとAndroid 6.0(APIレベル23)のアクセス権を要求しています
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=3432, uid=10060 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
私の知る限りこれが原因でAndroidが新しいAPIの中で許可を処理している方法である言うことができるように、ここで注意しました:アプリが実行されている間
https://developer.android.com/training/permissions/requesting.html
は、Android 6.0(APIレベル23)で始まり、ユーザーがアプリをインストールしていないとき、アプリケーションに権限を付与します。は、だから私は(私はAndroidのサポートライブラリをインストールした)実行時に許可を要求する方法について説明し、その後、問題がある、メソッドのシグネチャは次のようになります。
int checkSelfPermission (Context context,
String permission)
私はできませんコンテキストへの参照を取得する方法を見つけてください(提供されたリンクの例でも、そこに同じ問題があるアクティビティが使用されています)。私は、MAF内からこれをどうやって行うのか、あまり気にしていません.Apple/Activityオブジェクトは公開されていないようです。
私は単に私のクラスの1つでActivityを拡張しようとしましたが、this
でcheckSelfPermissionメソッドを呼び出そうとしましたが、なぜこれが間違っているのかをActivityが理解した上で読み込んだら、ランタイムエラーが発生します。
TL:DR
どのように我々は新しいアンドロイド6(APIレベル23)、実行時のOracleのモバイル・アプリケーション・フレームワークと許可要求を処理するのですか?
編集: コメントの議論によれば、実行時に権限を要求していなくても、アプリはAndroid 6でも正常に機能するはずです。 は、だから私はMAFは、ビルドに生成されたAndroidManifest.xmlファイルを見ていた、と私は(上記の例外から)許可android.permission.READ_EXTERNAL_STORAGE
が存在しないことがわかります。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<permission android:name="com.bsaf.atlas.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="com.bsaf.atlas.permission.C2D_MESSAGE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INTERNET"/>
も面白い、ですGPSの場所はどちらか更新されない、ログは常にこの投稿されています
07-07 02:07:13.089 2174 2174 E LocationProvider: Caught security exception registering for location updates from system. This should only happen in DumpRenderTree.
をだから私の次の質問は、私はMAF内のAndroidManifest.xmlに影響を与えないか、でしょうか?そして、なぜこの場所の更新に苦労しているのですか?
Oracle MAFは、Android 6/APIレベル23、Android 5/API 21は現在の認定レベルです。http://www.oracle.com/technetwork/developer-tools/maf/documentation/maf231certmatrix- 3039175.html。 Android 6のサポートが予定されているときだけでなく、実行時のアクセス許可がサポートされるときに、MAFプロダクトマネジメントチームに聞かせてください。 –
申し訳ありませんが、マイナーな修正です。私たちは実行時にAndroid 6をサポートしますが、ビルド時にはAndroid 5をサポートします。私はまだ新しいAndroid 6ランタイムのアクセス許可をどのようにカバーするかを確認する必要があります。 –
すごく素晴らしいです、ありがとうございました!私は熱心に多くの情報を待っています。 – Rohan