2016-03-18 3 views
2

Ich möchte alle Rechte der Anwendung während der Installation zuweisen. Ich weiß, wenn ich die AppWie man Berechtigungen auf Xiomi und Huawei Telefonen programmatisch annimmt

adb install -g <apk_name> 

aber das funktioniert für API 23 und höher installieren.

Mein Problem ist alle Xiomi and Huawei phones welche below API 23 sind, sie zeigen auch ein Popup, wenn Sie versuchen, auf Kamera zugreifen, Audio aufnehmen, etc. Das sind System Popups.

Jetzt, wenn das Telefon auf API 23 und höher ist, weiß ich, dass ich requestPermissions() verwenden kann, aber wie kann ich die Berechtigungen von diesen Arten von Popups programmgesteuert akzeptieren.

Hinweis - Dies ist für meine Automatisierungsprüfung erforderlich.

+0

Wenn nichts anderes, Sie 'UiAutomator' verwenden können möglicherweise die Berechtigung im Dialog zu automatisieren zu akzeptieren, als Teil der Tests selbst. – CommonsWare

+0

Es ist nicht erforderlich, dass das Berechtigungs-Popup an einer bestimmten Stelle erscheint. Man kann keinen Test für den unbekannten Ort hinzufügen. –

+0

'UiAutomator' arbeitet mit Widgets mit IDs und/oder Bildunterschriften, nicht mit Pixelkoordinaten. – CommonsWare

Antwort

-1

Erstens glaube ich, Sie ContextCompat#requestPermissions() in API < 23 bereitgestellt implementieren können Sie verwenden

dependencies { 
... 
compile 'com.android.support:appcompat-v7:23.1.1' 
... 
} 

Wie auch immer, um die Berechtigungen zu akzeptieren, müssen Sie die Callback-Methode in Ihrer Tätigkeit implementieren.

@Override 
public void onRequestPermissionsResult(int requestCode, 
     String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
       && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       // permission was granted, yay! Do the 
       // contacts-related task you need to do. 

      } else { 

       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
      } 
      return; 
     } 

     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 

http://developer.android.com/training/permissions/requesting.html

+0

Ihre Antwort bezieht sich auf Standard-Laufzeitberechtigungen für API Level 23+. Die Frage betrifft etwas anderes. – CommonsWare

+0

Ich glaube, einschließlich der Support-Bibliothek und ContextCompat/ActivityCompat funktioniert, wie in meinem Beitrag vorgeschlagen. Willst du damit sagen, dass es nicht so ist? –

+1

@Russell ContextCompat # requestPermissions() funktioniert nicht für unter API 23 –

Verwandte Themen