2017-08-10 6 views
1

スクリーンを持たないハードウェア上で動作するアプリケーションをビルドする。アプリケーションを実行するには、カメラとストレージへの書き込みという2つの権限が必要です。私のアプリケーションにはUIがなく、デバイスにはUIを表示する方法がないので、アプリケーションのアクセス許可を与える方法が不思議です。Androidサービス用にプログラムで許可を与える

この特定のアプリケーションでは、ユーザーは、ユーザーがボタンを押したときにデバイスが画像を撮影することを既に知っています。したがって、ユーザーの観点からは、明示的にアクセス許可を与える必要はありません。

ありがとうございます。

+0

通常のアンドロイドのための方法はありません。 Android用のもののみ。 –

+0

これを確認してください(https://stackoverflow.com/questions/32292675/how-to-request-permissions-from-a-service-and-roid-marshmallow) -in-android-marshmallow) – ELITE

答えて

0

アクセス許可を実行時に追加する方法はありません。インストール時にAndroidユーザーに提示する必要があるため、AndroidManifestで明示的に指定する必要があります。

は、私は次のポストを見て提案することができる:それはその マニフェストのタグで宣言されているときに、サービスへPermission issue while starting a service from android

グローバルアクセスを強制することができます。そうすることによって、他のアプリケーションは、 の対応する要素を、起動、停止、 、またはサービスにバインドできるように宣言する必要があります。 Context.startService(意図)を使用しているときジンジャーブレッドのよう

は、あなたが もIntent.FLAG_GRANT_READ_URI_PERMISSIONおよび/または意図に Intent.FLAG_GRANT_WRITE_URI_PERMISSIONを設定することができます。これにより、インテント内の特定のURIにサービス が一時的にアクセスできるようになります。 サービスは、 開始コマンドまたはそれ以降のサービスに対してstopSelf(int)を呼び出すか、またはサービスが完全に終了するまで、 が停止するまで続きます。これは、 がサービスを保護する許可を要求されていない他のアプリへのアクセスを許可する場合、または サービスがまったくエクスポートされていない場合でも有効です。

さらに、サービスは、その呼び出しの実装を実行する前にcheckCallingPermission(String)メソッド を呼び出すことによって、 権限で個々のIPC呼び出しを保護することができます。

一般的なアクセス許可とセキュリティの詳細については、セキュリティとアクセス許可のドキュメントを参照してください。

0

UI(xmlレイアウトなし)を使わずに透明なアクティビティを作成し、android marshmallow権限のコードを実行します。アプリケーションが実行されると、サービスからこのアクティビティが呼び出され、ハードウェアまたはどこからでもどこからでもアプリケーションがトリガされた場合にのみ、ユーザーにパーミッションが表示されます。アプリが開いている間は透過的なアクティビティが開いており、ユーザーはその権限を与えることができます。

+0

でも、デバイスに画面が表示されないという問題があります。ユーザーがアクセス許可を見る方法はありません。 – KTB

+0

あなたのアプリケーションにはサービスしかない権利があります。アプリケーションが何かをトリガーするとき(サービスを開始)を意味します。 シンプル:ステップ1 UIなしで透明なアクティビティを作成し、必要な権限をコードすることができます。 ステップ2.このアクティビティを取得したサービスから呼び出します(サービスからアクティビティを開始するには、UI画面は必要ありません)。 アプリがデバイスに埋め込まれているとき、このアクティビティコールのみの権限ポップアップが初めて表示されるとき。 –

関連する問題