2013-09-08 32 views
11

Tôi gặp sự cố khi truy cập Hệ thống tệp Android cho mục đích lưu trữ trong ứng dụng điện thoại của tôi. Tôi đã tìm kiếm và tìm thấy rất nhiều giải pháp không phải của tôi!Phonegap Android LocalFileSystem không được xác định

Tôi biết về sự cần thiết của deviceready được kích hoạt và kiểm tra và nó đã bị sa thải. Vì vậy, các phonegap.js được nạp hoàn hảo!

Tôi nghĩ rằng tôi đã yêu cầu quyền đối với tệp và có các tính năng trong tệp kê khai và tệp cấu hình của tôi. ở đây đó là:

config.xml:

<feature name="http://api.phonegap.com/1.0/device" /> 
    <feature name="http://api.phonegap.com/1.0/battery"/> 
    <feature name="http://api.phonegap.com/1.0/camera"/> 
    <feature name="http://api.phonegap.com/1.0/contacts"/> 
    <feature name="http://api.phonegap.com/1.0/file"/> 
    <feature name="http://api.phonegap.com/1.0/geolocation"/> 
    <feature name="http://api.phonegap.com/1.0/media"/> 
    <feature name="http://api.phonegap.com/1.0/network"/> 
    <feature name="http://api.phonegap.com/1.0/notification"/> 
    <preference name="permissions" value="none" /> 
    <preference name="orientation" value="default" /> 
    <preference name="target-device" value="universal" /> 
    <preference name="fullscreen" value="true" /> 
    <preference name="webviewbounce" value="true" /> 
    <preference name="prerendered-icon" value="true" /> 
    <preference name="stay-in-webview" value="false" /> 
    <preference name="ios-statusbarstyle" value="black-opaque" /> 
    <preference name="detect-data-types" value="true" /> 
    <preference name="exit-on-suspend" value="false" /> 
    <preference name="show-splash-screen-spinner" value="true" /> 
    <preference name="auto-hide-splash-screen" value="true" /> 
    <preference name="disable-cursor" value="false" /> 
    <preference name="android-minSdkVersion" value="7" /> 
    <preference name="android-installLocation" value="auto" /> 
    <icon src="icon.png" /> 
    <icon gap:density="ldpi" gap:platform="android" src="res/icon/android/icon-36-ldpi.png" /> 
    <icon gap:density="mdpi" gap:platform="android" src="res/icon/android/icon-48-mdpi.png" /> 
    <icon gap:density="hdpi" gap:platform="android" src="res/icon/android/icon-72-hdpi.png" /> 
    <icon gap:density="xhdpi" gap:platform="android" src="res/icon/android/icon-96-xhdpi.png" /> 
    <access origin="*" /> 
    <content src="index.html" /> 
</widget> 

AndroidManifest.xml:

<?xml version='1.0' encoding='utf-8'?> 
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="1.0.0" android:windowSoftInputMode="adjustPan" package="com.pakhshyaran.kara" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.BROADCAST_STICKY" /> 
    <uses-permission android:name="android.permission." /> 
    <application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:name="Kara" android:theme="@android:style/Theme.Black.NoTitleBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="18" /> 
</manifest> 

và đây là lỗi ném một phần của mã của tôi:

$(document).ready(function() { 
    document.addEventListener("deviceready", onDeviceReady, false); 
}); 
function onDeviceReady() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) { //throws the 'Uncaught ReferenceError: LocalFileSystem is not defined' error 
     fileSystem = fileSystem; 
    }, function (evt) { 
     alert(evt.target.error.code); 
    }); 
} 

Nhưng tôi nhận được lỗi vì một lý do tôi không có bất kỳ ý tưởng về! Xin vui lòng cho tôi suy nghĩ của bạn. Tôi đánh giá cao nó rất nhiều.

PS: Tôi đang sử dụng phonegap 3.0!

Trả lời

19

Bạn đang sử dụng cli phonegap để tạo dự án của mình? Sau đó, bạn có thể đã bỏ lỡ việc thêm Plugin tệp vào dự án của mình. Bên cạnh việc định cấu hình trong config.xmlAndroidManifiest.xml bạn cần mã cho plugin. Bạn có thể thêm nó vào dự án của bạn với:

$ phonegap plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git 

Kiểm tra đầu trang trong tài liệu: http://docs.phonegap.com/en/3.0.0/cordova_file_file.md.html#LocalFileSystem

Bạn cũng có thể kiểm tra các tập tin android/assets/www/cordova_plugins.js để xem nếu window.LocalFileSystem là thực sự xác định. Tìm kiếm những thứ như thế này:

{ 
    "file": "plugins/org.apache.cordova.core.file/www/FileSystem.js", 
    "id": "org.apache.cordova.core.file.FileSystem", 
    "clobbers": [ 
     "window.FileSystem" 
    ] 
}, 
+2

Cảm ơn câu trả lời của bạn. Tôi không biết rằng tôi phải thêm plugin. Tôi chạy lệnh và nó đã được thực hiện. nhưng không có gì xảy ra với cordova_plugins.js. Có điều gì khác mà tôi nên biết không? – Hosein

+2

@Hosein Thêm plugin thực sự cũng thêm cấu hình. Hãy thử xây dựng lại nó: cordova xây dựng android – davidlgj

+0

Cảm ơn. Nó đã được giải quyết với một chút khó khăn. – Hosein

Các vấn đề liên quan