菜鸟教程小白 发表于 2022-12-13 15:37:50

android - 如何使下载的图像显示在设备的图库中?


                                            <p><p>我有一个 phonegap 照片库应用程序,可以选择将图像下载到设备。 </p>

<p>目前,我可以将图像保存到设备的 SDCard 中,但它们不会显示在设备的照片库/图库应用程序中。</p>

<p>这是我正在使用的代码:</p>

<pre><code>var remoteFile = encodeURI($(&#34;#imageView_content&#34;).find(&#34;img&#34;).attr(&#34;src&#34;));
var localFileName = remoteFile.substring(remoteFile.lastIndexOf(&#39;/&#39;) + 1);

var downloadSuccess = function() {
    alert(&#34;Download sucessful!\nFile Saved at: &#34; + localFileName);
};
var handleDownloadedFile = function(entry) {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, downloadSuccess, fail);
};
var startFileTransfer = function(fileEntry) {
    var localPath = fileEntry.fullPath;
    var ft = new FileTransfer();
    ft.download(remoteFile, localPath, handleDownloadedFile, fail);
};
var createLocalFile = function(dir) {
    dir.getFile(localFileName, {
      create : true,
      exclusive : false
    }, startFileTransfer, fail);
};
var createPhotosDir = function(fileSys) {
    fileSys.root.getDirectory(&#34;myAppName&#34;, {
      create : true,
      exclusive : false
    }, createLocalFile, fail);
};

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, createPhotosDir, fail);
</code></pre>

<p>我正在使用 <a href="https://build.phonegap.com" rel="noreferrer noopener nofollow">https://build.phonegap.com</a>构建应用程序</p>

<p><strong>更新:</strong></p>

<p>我正在尝试使用取决于设备的路径,但这似乎不起作用:</p>

<ul>
<li>在 iOS(模拟器)上,调用失败 - 路径:<code>file:///private/var/root/Media/DCIM/100APPLE/myApp/</code></li>
<li>在 Android 上,下载成功,但在设备重新启动之前,图片仍然不会显示在图库中 - 路径:<code>dcim/myApp/</code></li>
<li>我无法在 BlackBerry 上进行测试,但我已将其设置为先尝试 <code>file:///SDCard/BlackBerry/pictures/myApp/</code>,然后再尝试 <code>file:///store/home/user/pictures/myApp/</code> 失败</li>
</ul>

<p>这是设备检测代码:</p>

<pre><code>var platform = (device.platform || navigator.userAgent).toLowerCase();
if (platform.match(/iphone/i) || platform.match(/ipad/i) || platform.match(/ios/i)) {
    window.resolveLocalFileSystemURI(&#34;file:///private/var/root/Media/DCIM/100APPLE/&#34;, createPhotosDir_fromDir, callPhotosDir);
} else if (platform.match(/blackberry/i) || navigator.userAgent.toLowerCase().match(/blackberry/i)) {
    window.resolveLocalFileSystemURI(&#34;file:///SDCard/BlackBerry/pictures/&#34;, createPhotosDir_BB, callPhotosDir);
} else if (platform.match(/android/i)) {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, createPhotosDir_Droid, callPhotosDir);
} else {
    callPhotosDir();
}
</code></pre>

<p>这里是目录选择函数:</p>

<pre><code>var callPhotosDir = function() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, createPhotosDir, fail);
};
var createPhotosDir_fromDir = function(dir) {
    dir.getDirectory(&#34;myApp&#34;, {
      create : true,
      exclusive : false
    }, createLocalFile, callPhotosDir);
};
var createPhotosDir_Droid = function(fileSys) {
    fileSys.root.getDirectory(&#34;dcim/myApp&#34;, {
      create : true,
      exclusive : false
    }, createLocalFile, callPhotosDir);
};
var createPhotosDir_BB = function(dir) {
    dir.getDirectory(&#34;myApp&#34;, {
      create : true,
      exclusive : false
    }, createLocalFile, function() {
      window.resolveLocalFileSystemURI(&#34;file:///store/home/user/pictures/&#34;, createPhotosDir_fromDir, callPhotosDir);
    });
};
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>将它们保存到 SDCard 上的正确位置。 BlackBerry 设备将 SDCard 安装在/SDCard,因此完整路径为 <code>/SDCard/BlackBerry/pictures/</code></p>

<p>您还可以在图片目录中创建一个子目录,当从照片库应用程序查看时,该子目录将组织照片。</p>

<p>设备也有内置存储,但容量远小于大多数 SDCard。要将图片保存在那里,请使用路径 <code>/store/home/user/pictures/</code></p></p>
                                   
                                                <p style="font-size: 20px;">关于android - 如何使下载的图像显示在设备的图库中?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11858949/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11858949/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: android - 如何使下载的图像显示在设备的图库中?