2017-09-10 3 views
1

Je construis une application qui permet aux gens d'afficher des photos et des vidéos, principalement en essayant d'en apprendre davantage sur ionique, cordova, android, etc., mais pour une raison quelconque, j'essaie d'ouvrir un fichier le plugin Cordova File, il ne demande pas à l'utilisateur l'autorisation d'accéder au stockage, et le code échoue et l'utilisateur est bloqué sur un écran de chargement. Le code est assez simple, ils prennent une vidéo, il est transcodé, puis le fichier transcodé est téléchargé dans un compartiment de stockage Firebase. Si je quitte l'application, allez dans settings-> apps-> my app-> permissions, puis activez manuellement l'autorisation de stockage, cela fonctionne. Le problème est, je dois demander à l'utilisateur la permission soit au moment de l'exécution ou sur l'installation, et ce n'est pas le cas. Voici le code ..Android ne demande pas la permission dans l'application ionique

this.media.captureVideo().then(file => { 
    this.editor.transcodeVideo({ 
    fileUri: file[0].fullPath, 
    outputFileType: this.editor.OutputFileType.MPEG4, 
    outputFileName: 'temp_test', 
    saveToLibrary: false, 
    height: 800, 
    width: 800, 
    maintainAspectRatio: false 
    }).then(fileUri => { 
    let pathIndex = fileUri.lastIndexOf('/'), 
     finalPath = 'file://' + fileUri.substr(0, pathIndex), 
     name = fileUri.substr(pathIndex + 1, fileUri.length); 
    this.file.readAsArrayBuffer(finalPath, name).then(file => { 
     //upload 
    }).catch(err => { console.log(err); }); 
    }); 
}); 

Cependant, cela ne fonctionne que si j'ouvre les paramètres de mon téléphone, accédez aux applications, puis mon application, puis les autorisations, puis activer manuellement le stockage. Y at-il un moyen de demander la permission en ionique? J'ai cherché et recherché et toutes les réponses que je peux trouver sont spécifiques à la caméra, ou fonctionnent en Java, mais ionique n'est pas java. Je vous remercie.

+0

vous pouvez utiliser [cordova.plugins.diagnosti] (http://www.qed42.com/blog/ionic-android-6-runtime-permissions) plugin –

Répondre

1

Effectivement cordova-plugin-media-capture utilise cordova-plugin-file, donc la permission READ_EXTERNAL_STORAGE doit être demandée par programme.

ionique offre un support natif pour Android Permissions:

this.androidPermissions.hasPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE) 
     .then(status => { 
      if (status.hasPermission) { 
      this.captureVideo(); 
      } else { 
      this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.READ_EXTERNAL_STORAGE) 
      .then(status =>{ 
       if(status.hasPermission) this.captureVideo(); 
      }); 
      } 
     } 

Hope it helps.