さまざまなシステム サービスに到達し、分析用のデータを収集する方法を提供する Android ライブラリを開発しています。私のクラスでは、さまざまなシステム サービス マネージャー ( などWifiManager
) を使用してデータを収集します。
これらのすべての機能が必要とする可能性のあるすべてのアクセス許可を取得しないように、ライブラリのマニフェストを構成したいと考えています。代わりに、そのライブラリを消費するアプリに任せて、必要なアクセス許可のみを宣言したいと思います。これは、ライブラリで使用されるもののサブセットである可能性があります。
マニフェストはビルド プロセス中にすべてマージされるため、これは実際に機能します。これにより、アプリはライブラリの機能を使用するために必要なアクセス許可を持つことになります。ただし、この<uses-permission>
タグはライブラリのマニフェストにないため、コードはすべて Android Studio からの警告で照らされます。
パーミッション チェックが無視されるようにライブラリ コードに注釈を付ける方法はありますか? もちろん、 Android Studio の設定で「Constant and Resource Type Mismatches」インスペクションをオフにすることもできますが、ライブラリを使用しようとしている他の人には役に立ちません。ドキュメントでこのインスペクションへの参照を見つけようとしました(したがって、それを強制終了でき
@SuppressWarnings
ましたが、まだ見つかりませんでした。これは価値のあるアプローチですか? ...または代わりに、ライブラリに必要なすべてのアクセス許可を取得させる必要があります。これにより、ライブラリのコンシューマーは、マニフェストでプロパティを使用して必要のないアクセス許可をオフにする必要がありますか? ここでの問題は、ライブラリに機能を追加すると、ライブラリの消費者が繰り返し戻って、それらの新しいアクセス許可も明示的に削除する必要があることです。それは素晴らしいモデルではないように感じます。許可の要求は消費者に任せたいと思います。
tools:node="remove"
この件に関する次の会話を検討してください—</p>