2017-09-10 5 views
1

Ich baue App, die Menschen Bilder und Videos veröffentlichen können, vor allem versuchen, über ionische, Cordova, Android und dergleichen zu lernen, aber aus irgendeinem Grund, wenn ich versuche, eine Datei mit zu öffnen Das cordova File-Plugin fragt nicht, ob der Benutzer auf den Speicher zugreifen darf, und der Code schlägt fehl und der Benutzer bleibt auf dem Ladebildschirm hängen. Der Code ist ziemlich einfach, sie nehmen ein Video, es wird transcodiert, dann wird die transcodierte Datei in einen Firebase Storage-Bucket hochgeladen. Wenn ich die App verlasse, gehe zu Einstellungen-> Apps-> Meine App-> Berechtigungen und dann manuell die Speicherberechtigung aktivieren, funktioniert es. Das Problem ist, ich muss den Benutzer um Erlaubnis entweder zur Laufzeit oder bei der Installation bitten, und es tut es nicht. Hier ist der Code ..Android nicht um Erlaubnis in ionic app

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); }); 
    }); 
}); 

Dies funktioniert jedoch nur, wenn ich die Einstellungen auf meinem Handy öffnen, gehen Sie auf Apps, dann meine app, dann Berechtigungen, aktivieren Speicherung manuell. Gibt es eine Möglichkeit, die Erlaubnis in ionic zu beantragen? Ich habe gesucht und gesucht und alle Antworten, die ich finden kann, sind spezifisch für die Kamera oder arbeiten in Java, aber ionisch ist nicht Java. Vielen Dank.

+0

können Sie [cordova.plugins.diagnosti] (http://www.qed42.com/blog/ionic-android-6-runtime-permissions) Plugin verwenden –

Antwort

1

Effektiv cordova-plugin-media-capture verwendet cordova-plugin-file, so muss die READ_EXTERNAL_STORAGE Erlaubnis programmatisch gefragt werden.

Ionic bietet native Unterstützung für 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(); 
      }); 
      } 
     } 

Hoffe, es hilft.

Verwandte Themen