2016-05-14 9 views
2

Ich bin neu in Chrome App-Entwicklung, ich habe Desktop-basierte App entwickelt ein paar Tage zurück mit NW, Jetzt möchte ich die gleiche App für Chrom entwickelt.Wie programmgesteuert auf Chrome App-Installationsverzeichnis zugreifen?

Hier ist, was ich erreichen will -

1.Erstellen Ordner (benannt gleiche wie App-Name) in lokalen Dateisystem des Benutzers, wenn App installiert.

2. Speichern/Zugriff auf Dateien und Ordner im oben genannten Ordner.

können diese Probleme durch die Dateisystem-API von Chrome gelöst werden? wenn JA dann bitte sende mir den Weg.

BTW, ich habe versucht, wie Dateisystem-api und meinen Manifest-Datei Blick zuzugreifen unten-

{ 
    "manifest_version": 2, 
    "name": "sampleApp", 
    "short_name": "sampleApp", 
    "description": "A Sample APP", 
    "version": "0.0.1", 
    "minimum_chrome_version": "38", 

    "icons": { 
    "16": "assets/images/icon_16.png", 
    "128": "assets/images/icon_128.png" 
    }, 
    "permissions": [ 
    {"fileSystem": ["write", "retainEntries", "directory","requestFileSystem"]}, 
    "unlimitedStorage", 
    "system.network", 
    "storage" 
    ], 
    "app": { 
    "background": { 
     "scripts": ["main.js"] 
    } 

    } 
} 

Wenn ich meine Anwendung ausführen und versuchen, Dateisystem api für den Zugriff auf i in Chrome-Erweiterung siehe Warnung flächen-

Hinweis: ich verwende gewinnen 10.

fileSystem.requestFileSystem' is not allowed for specified platform 

Antwort

3

requestFileSystem ist die falsche zu verwendende API:

Verfügbar für Kiosk-Apps, die nur in der Kiosk-Sitzung ausgeführt werden.

Sie sollten nur fileSystem.chooseEntry rufen Sie den Benutzer fragen, wo er diesen Ordner will erstellt und dann den Eintrag beibehalten, so dass Sie um Erlaubnis fragen Sie nicht brauchen, um wieder.

Es gibt keine Möglichkeit, den Benutzer nicht durch chooseEntry zu fragen, aber Sie können dies nur einmal tun.

Ein guter fileSystem API-Beispiel ist provided by Google.


Hinweis, können Sie lautlos der Zugriff auf Ihre App anfordern Installationsordner (wie Sie in dem Titel fragen) mit chrome.runtime.getPackageDirectoryEntry. Dieser Zugriff ist jedoch schreibgeschützt.

Und wenn Sie diesen Ordner jemals ändern, wird Chrome Ihre App umgehend als "kompromittiert" deaktivieren, da die signierten Hashwerte aller im Chrome Web Store heruntergeladenen Dateien beibehalten werden.


Als mögliche Lösung können Sie request a virtual filesystem vor Aufforderung an den Benutzer, wenn Sie nicht wollen, dass prompt das erste, was Ihre Anwendung tut sein. Aber um auf die Festplatte zu schreiben, brauchen Sie die Eingabeaufforderung. Es macht also wenig Sinn, es auf diese Weise zu komplizieren - erklären Sie dem Benutzer, dass Sie einen Speicherort auswählen müssen.

+0

Vielen Dank für Ihre Antwort, ich habe versucht, früheren Datei-System Beispiel, es erfüllt nicht meine Anforderung, ich möchte nicht als Dialog jederzeit speichern, gibt es eine andere Möglichkeit, das gleiche Szenario zu erreichen, kann einige sein anderer Ort nicht notwendig im App-Verzeichnis.? – Ahtisham

+0

Nein, unter keinen Umständen dürfen Sie direkten Schreibzugriff ohne Aufforderung erhalten. – Xan

+0

Im Kiosk-Modus können Sie ein externes Dateisystem mit Schreibzugriff ohne Benutzeraufforderung erhalten: https://developer.chrome.com/apps/fileSystem # method-requestFileSystem – kzahel

Verwandte Themen