我开发了一款应用,想要一个链接来打开图片库。这些图像是本地捆绑的,并包含在我的assets / www / img目录中。 我希望这与本机图库无缝衔接。 这可能吗?
我试过使用以下内容,但无法得到答复。
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is ready
//
function onDeviceReady() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
}
function onFileSystemSuccess(fileSystem) {
fileSystem.root.getDirectory("img/china", {create: false, exclusive: false}, getDirSuccess, fail);
}
function getDirSuccess(dirEntry) {
// Get a directory reader
var directoryReader = dirEntry.createReader();
// Get a list of all the entries in the directory
directoryReader.readEntries(readerSuccess,fail);
}
var numDirs = 0;
var numFiles = 0;
var readerTimeout = null, millisecondsBetweenReadSuccess = 100;
function readerSuccess(entries) {
var i = 0, len = entries.length;
for (; i < len; i++) {
if (entries[i].isFile) {
numFiles++;
entries[i].file(fileSuccess,fail);
} else if (entries[i].isDirectory) {
numDirs++;
getDirSuccess(entries[i]);
}
if (readerTimeout) {
window.clearTimeout(readerTimeout);
}
}
if (readerTimeout) {
window.clearTimeout(readerTimeout);
}
readerTimeout = window.setTimeout(weAreDone, millisecondsBetweenReadSuccess);
}
// additional event to call when totally done
function weAreDone() {
// do something
}
答案 0 :(得分:0)
相机文档涵盖了此内容。这不适合你吗?
如果Camera.sourceType = Camera.PictureSourceType.PHOTOLIBRARY或Camera.PictureSourceType.SAVEDPHOTOALBUM,则会显示照片选择器对话框,从中可以选择相册中的照片。
http://docs.phonegap.com/phonegap_camera_camera.md.html
另请参阅......
使用PhoneGap&amp; amp;浏览图像库的Android
我正在将我为iPhone写的应用程序移植到Android上,我想从相机功能开始。我环顾四周,谷歌搜索,我找不到如何在Android设备上浏览图库的文件。我决定对现有的Camera对象进行一些简单的修改,以支持现在的功能。我是未来,希望PhoneGap的人能更好地实现这一点,我可以将这些代码放到牧场。
此代码需要添加到phoneGap.js文件中。它为在设备上浏览图库的新方法创建原型
1 //
2 // add the new prototype to support the browse function
3 //
4 // i have created a new class 'PixCameraLauncher' so I did not have to modify
5 // the original class file provided by PhoneGap
6 //
7 com.phonegap.CameraLauncherProxy.prototype.browseImages = function(quality) {
8 return PhoneGap.exec("com.phonegap.gapTest.PixCameraLauncher", "browseImages", [quality]);
9 };
这是我对PhoneGap提供的CameraLauncher类所做的修改。添加新意图以启动图库“
01 /**
02 * Get a picture from the Image Gallery.
03 *
04 * in DroidGap.onActivityResult, which forwards the result to
05 * this.onActivityResult.
06 *
07 * @param quality
08 * Compression quality hint (0-100: 0=low quality & high
09 * compression, 100=compress of max quality)
10 */
11 public void browseImages(int quality) {
12 this.mQuality = quality;
13
14 // Display camera
15 Intent intent = new Intent(Intent.ACTION_PICK,
16 android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
17
18 this.ctx.startActivityForResult((Plugin) this, intent);
19 }
我们还需要处理返回的文件。我把它简单化了,但是可以稍微清理一下我所做的是假设如果数据字段中有URI,则选择一个图像并由实用程序处理。
的开头1 void onActivityResult(int requestCode, int resultCode, Intent intent)
添加以下代码。这将处理将URI重新分配给所选文件
1 // If image available
2 if (resultCode == Activity.RESULT_OK) {
3
4 //
5 // this means the user selected an image, so just pass it back!!
6 //
7 if (intent.getData() != null) {
8 imageUri = intent.getData();
9 }
经过一些测试和代码清理之后,我将为android工作和iphone工作提供完整的项目。如果有任何问题,请在下面发布。
答案 1 :(得分:0)
问题是您正在尝试使用File API读取应用程序资产目录中的文件。该目录实际上不是文件系统的一部分。当你执行window.requestFileSystem(LocalFileSystem.PERSISTENT,...)时,你实际上得到了/ sdcard(最有可能)。因此,当您尝试加载“img / china”时,该目录不存在。
您需要在主Java类的onCreate方法期间将资源目录中的文件复制到本地文件系统。然后,您可以使用DirectoryReader获取所有文件的列表。
或者,如果您提前知道所有图像,则可以创建自己的JSON文件,列出所有图像。然后加载该文件,并能够遍历所有条目以创建自己的图库。