2017-08-23 2 views
2

Je développe une application Web à l'aide de Webview en studio android mais ayant une question que je dois avoir l'accès ouvert la caméra comment puis-je faire que j'ai donné la permission suivante dans AndroidManifest.xmlComment obtenir l'autorisation d'accéder à la caméra dans le Webview Android?

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Que devrais-je faire de plus pour ouvrir l'appareil photo?

Répondre

2

si votre application cible Android 6.0 et plus que d'ajouter l'autorisation d'exécution

À partir de Android 6.0 (niveau API 23), les utilisateurs accordent des autorisations aux applications lorsque l'application est en cours d'exécution, pas quand ils installer l'application

ajouter l'autorisation d'exécution en utilisant le code ci-dessous pour la caméra

String permission = Manifest.permission.CAMERA; 
int grant = ContextCompat.checkSelfPermission(this, permission); 
if (grant != PackageManager.PERMISSION_GRANTED) { 
    String[] permission_list = new String[1]; 
    permission_list[0] = permission; 
    ActivityCompat.requestPermissions(this, permission_list, 1); 
} 

et que gérer résultat comme celui-

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
             @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == 1) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      Toast.makeText(AccountClass.this,"permission granted", Toast.LENGTH_SHORT).show(); 
      // perform your action here 

     } else { 
      Toast.makeText(AccountClass.this,"permission not granted", Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

En savoir plus sur runtime permission

+0

merci beaucoup @NIlesh Rathod j'intègre votre code à mon application obtenir l'autorisation, mais la fonction spécifique n'est pas travailler dans webview mais cela fonctionne navigateur mobile Chrode –

+0

Je veux quelque chose de chose spécifique mon application obtient la permission, mais quand j'ai essayé d'ouvrir la fonction de la caméra de mon application qui ne s'ouvre pas, mais quand je charge l'URL dans Chrrome ça fonctionne bien devrait faire @Nilesh Rathod –

+0

avez-vous reçu une exception lors de l'exécution de votre application –

0

Si vous développez une application Web en utilisant le webView alors vous devriez en apprendre davantage sur JavascriptInterface fourni par Android. Passez par les liens suivants

Javascript interface

Android webView

Tout ce que vous devez faire est de configurer javascript appel back.call cette méthode à partir de votre page Web, gérer l'appel javascript retour dans l'activité/fragment et de là vous pouvez ouvrir la caméra.

Vous devez également vérifier la réponse de @Nilesh Rathod pour les autorisations d'exécution.

voici les extraits de code qui vous aideront à

private class WebAppInterface { 

    public WebAppInterface(Context context) { 
    } 

    @JavascriptInterface 
    public void openCamera(String title) { 
     //check permissions and open camera intent; 
    } 
} 


mWebView.addJavascriptInterface(new WebAppInterface(this), "PLATFORM_ID"); 
1

Je pense que la meilleure façon est ici d'utiliser l'API WebView pour accorder et refuser des autorisations.

  1. Créer une classe qui s'étend WebChromeClient;
  2. Substitution onPermissionRequest()
  3. Demander une autorisation demandée dans votre application ou gérer une demande d'une autre manière.
  4. Aussi, vous aurez probablement besoin de passer outre onPermissionRequestCanceled()
  5. Définir une instance de votre client à WebViewwebView.setWebChromeClient(chromeClient);