【问题标题】:Titanium Android - Got exception decoding bitmap when trying to open an imageTitanium Android - 尝试打开图像时出现异常解码位图
【发布时间】:2013-06-28 20:44:59
【问题描述】:

我正在使用 Titanium SDK 2.1.3 并为 iOS 和 Android 进行开发。我们的应用程序可以打开文件(目前在 Android 上是 txt 和图像),在 iOS 中我们使用一个特殊的库来处理文件,而在 Android 中我们想要使用 Android 的意图打开文件。但这会导致 Android 上的图像出现异常,即 got exception decoding bitmap。这是我制作 Intent 的代码:

var appFile = Ti.Filesystem.getFile(fileNativePath);
if(appFile)
{                           
    var intent = Ti.Android.createIntent({
        action : Ti.Android.ACTION_VIEW,
        type : appFile.read().mimeType,
        data : appFile.nativePath
    }); 
    try {
        Ti.Android.currentActivity.startActivity(intent);
    }
    catch(e)
    {
        Ti.API.error(e);
        alert('No apps for this');
    }
}

我试图打开的图像的本地路径如下:

file:///data/data/nenvo.com.desktop/app_appdata/1372368987874.jpg

完整的例外情况如下:

[ERROR][UriImage( 2887)] got exception decoding bitmap 
[ERROR][UriImage( 2887)] java.lang.NullPointerException
[ERROR][UriImage( 2887)]    at com.android.camera.Util.makeInputStream(Util.java:336)
[ERROR][UriImage( 2887)]    at com.android.camera.Util.makeBitmap(Util.java:307)
[ERROR][UriImage( 2887)]    at com.android.camera.Util.makeBitmap(Util.java:299)
[ERROR][UriImage( 2887)]    at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:94)
[ERROR][UriImage( 2887)]    at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:86)
[ERROR][UriImage( 2887)]    at com.android.camera.gallery.UriImage.thumbBitmap(UriImage.java:120)
[ERROR][UriImage( 2887)]    at com.android.camera.ImageGetter$ImageGetterRunnable.executeRequest(ImageGetter.java:173)
[ERROR][UriImage( 2887)]    at com.android.camera.ImageGetter$ImageGetterRunnable.run(ImageGetter.java:149)
[ERROR][UriImage( 2887)]    at java.lang.Thread.run(Thread.java:856)
[WARN][NetworkManagementSocketTagger(   76)] setKernelCountSet(10044, 0) failed with errno -2
[ERROR][UriImage( 2887)] got exception decoding bitmap 
[ERROR][UriImage( 2887)] java.lang.NullPointerException
[ERROR][UriImage( 2887)]    at com.android.camera.Util.makeInputStream(Util.java:336)
[ERROR][UriImage( 2887)]    at com.android.camera.Util.makeBitmap(Util.java:307)
[ERROR][UriImage( 2887)]    at com.android.camera.Util.makeBitmap(Util.java:299)
[ERROR][UriImage( 2887)]    at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:94)
[ERROR][UriImage( 2887)]    at com.android.camera.ImageGetter$ImageGetterRunnable.executeRequest(ImageGetter.java:204)
[ERROR][UriImage( 2887)]    at com.android.camera.ImageGetter$ImageGetterRunnable.run(ImageGetter.java:149)
[ERROR][UriImage( 2887)]    at java.lang.Thread.run(Thread.java:856)

我的方法有什么问题?提前感谢您的帮助。

【问题讨论】:

  • 该文件是否可读?该路径看起来是只读的,因此您无法通过意图共享它...也许尝试将其移动到某个地方或共享整个图像本身?
  • 是的,这成功了,把它作为答案,这样我就可以给它评分了。
  • 你能发布答案吗?
  • 答案已经贴在下面了

标签: android android-intent filesystems titanium titanium-mobile


【解决方案1】:

该路径看起来是只读的,因为它位于应用程序数据目录中,因此您无法通过意图共享它...

看来您有几个选择,要么将其复制到其他地方,要么将整个图像本身作为 blob 共享。

发生这种情况是因为(据我所知)Android 平台原生的底层查看器在权限为 READ_ONLY 时抛出异常。 This answer has a little more information about that.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2020-11-13
    • 2011-04-28
    相关资源
    最近更新 更多