2017-09-27 286 views
3

我正在通過Cordova插件(android)訪問攝像頭。爲此,我向用戶詢問permission。如果用戶點擊permission對話框中的「允許」,我必須啓動相機。爲此,在原生的Android,我重寫onRequestPermissionsResult方法類似科爾多瓦android插件onRequestPermissionsResult

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    switch (requestCode) { 
     case RequestCameraPermissionID: { 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
        return; 
       } 
       try { 
        cameraSource.start(surfaceView.getHolder()); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

      } 
     } 
     break; 
    } 
} 

所以,我想在科爾多瓦插件使用onRequestPermissionsResult。任何人都可以幫助我嗎?

回答

3

如果您將該方法放入插件.java文件中,它應該照常工作。關於運行時權限的話題甚至還有不錯的documentation。 請求許可是這樣的:

cordova.requestPermission(CordovaPlugin plugin, int requestCode, String permission); 

而且回調方法是這樣的:

public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException { 
    ... // you can find the whole example implementation in the docs 
} 

如果你不想自己實現,你可以隨時使用這個方便的插件:cordova-plugin-android-permissions到請求相機權限。

編輯(如何使用Android系統的權限插件):

var permissions = cordova.plugins.permissions; 

permissions.hasPermission(permissions.CAMERA, function(status) { 
    if (status.hasPermission) { 
    // here you can savely start your own plugin because you already have CAMERA permission 
    } 
    else { 
    // need to request camera permission 
    permissions.requestPermission(permissions.CAMERA, success, error); 

    function error() { 
     // camera permission not turned on 
    } 

    function success(status) { 
     if (status.hasPermission) { 
     // user accepted, here you can start your own plugin 
     } 
    } 
    } 
}); 
+0

謝謝大衛,我怎麼可以使用其它插件在我的自定義插件? – Bahu

+0

您不能在自定義插件中使用其他插件。您可以在應用程序的.js代碼中使用它。例如。使用android-permissions插件請求相機權限,並且只有在用戶已經授予權限的情況下才啓動您自己的插件。 – David

+0

可以請你分享任何例子 – Bahu