2016-11-19 17 views
4

コードネーム1にリアフェーシングカメラのライブプレビューを表示しようとしています。私はネイティブインターフェイスを使用しています(私はAndroidを最初にターゲットにしています)。許可コード "android.permission.CAMERA"をコードネーム1のマニフェストに追加する方法

が私のアプリをビルドヒントを台無しにせずにカメラを使用できるようにするには、私は私のメインフォームに次の行を追加:

if (Capture.hasCamera()){ 
    Dialog.show("Appareil photo détecté", "Votre matériel est bien équipé d'un appareil photo!", "OK", null); 
    } 
私がやった

をそのCodename One blog

android.hardwareを述べたので、 .camera & android.permission.RECORD_AUDIO - com.codename1.Captureによってトリガーされます。

ただし、私はいつもjava.lang.RuntimeException: Fail to connect to camera serviceを持っています。実際のデバイス(API LEVEL 19 aka Kit Kat)のAndroidスタジオのCN1から入手したソースを使用してアプリケーションをデバッグしています。私は例外のmanifest.xmlに次の権限の欠如によるものであったことに気づいしばらく

<uses-permission android:name="android.permission.CAMERA" android:required="false"/>

CN1に記載されているようにことに注意してくださいは<uses-feature android:name="android.hardware.camera" android:required="false" />がすでに追加された行をブログCN1によって。

このラインを追加したので、ライブプレビューがよく表示されます。

なぜこのパーミッションがマニフェストに自動的に追加されないのですか。ビルドヒントに実際に追加する必要がありますか?

また、私はカメラを使って写真を撮って電話に保存し、カメラの許可はどちらも表示されません(Androidアプリケーション情報には表示されません)。たとえば、 Twitterのアプリでは、アプリのアクセス許可に「写真と動画を撮る」と表示されているため、携帯電話のカメラの権限を隠しても問題にはならないようです。

EDIT 11月20日2016:

実際Android Developer's guideはその

注意を述べている:あなたは、既存のカメラアプリを起動してカメラを使用している場合、アプリケーションは、この許可を要求する必要はありません。

CN1にはこの許可が必要です。

CN1の権限管理を手伝ってくれてありがとう。

+0

実行時に許可を求めたくない場合は、compiledSDKversionをAndroid Lに設定することができます。その場合、アプリはすべてのMarshmallow機能を無視します。 – Tasneem

答えて

4

あなたは次のビルドヒントを追加する必要があります。

android.xpermissions=<uses-permission android:name="android.permission.CAMERA" android:required="false"/> 

それが自動的に注入されるようにするには、またcn1libにこれを追加することができます。

+0

私はそれをやっとしました。しかし、Capture.has camera()を使用すると、CN1はあなたが言及した必要な許可ではなく、なぜ HelloWorld

+0

OK私はついに...私の誤解を理解しました!実際、[Androidデベロッパーガイド](https://developer.android.com/guide/topics/media/camera.html#manifest)には、 >注意:既存のカメラアプリを呼び出すことによってカメラを使用している場合は、アプリケーションこの許可を要求する必要はありません。 だからこそCN1はこの許可を必要としません! – HelloWorld

+0

@Shaiなぜ "" ... >> "false" <<<これがカメラの許可をオンまたはオフにしますか? (私は私のアプリにいくつかの問題を抱えており、これは助けになります。ありがとう!) – ikevin8me

2

以前は、マニフェストに必要な権限を追加してから、ユーザーがアプリをインストールしようとすると要求されました。 Android 6.0以降では、これが変更されました。これで初めてアプリが必要なときに許可をリクエストすることができます。ユーザーが許可を与えた後、次回に再度質問する必要はありません。これには、特定のアクセス許可が必要な理由と、実際には必要ないアクセス許可を要求しないことをユーザーに知らせることが含まれます。

あなたがここでそれを実装する方法についての詳細を読むことができます:https://developer.android.com/training/permissions/requesting.html

いくつかの時点で許可を求めずに携帯電話のカメラを使用する方法はありません。

+0

アンドロイド6.0+で感謝しています。しかし、現在のAndroid 4.4.2はまだまだ使用されています(2016年11月のAndroid搭載端末の25%(https://developer.android.com/about/dashboards/index.html))。 – HelloWorld

+0

私はあなたの質問が何であるか分かりません。マニフェストに追加する必要があるかどうかを確認する場合は、答えは「はい」です。 – Zarwan

+0

私は[Codename One](www.codenameone.com)を使用しています。そして、彼らは私が使用するCodename Oneの方法に応じて、必要なアクセス許可を作成します。ただし、ネイティブ実装で書いたものに関するアクセス許可は追加しません。 **だからこそ私は、ドキュメンテーションに従ってカメラの許可を引き起こしたはずのCN1メソッドを使用したが、確かに**はしなかった。マニフェストに直接アクセスできないので、私は "android.xpermissions"という特定の "ビルドヒント"を提供し、それをカメラの待ち伏せで埋めなければなりませんでした。 – HelloWorld

関連する問題