首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在某些BlackBerry手持设备上使FilePicker正常工作?

如何在某些BlackBerry手持设备上使FilePicker正常工作?
EN

Stack Overflow用户
提问于 2011-11-03 16:00:15
回答 2查看 843关注 0票数 0

我正在我的应用程序中实现一个Filepicker,允许用户从他们的手机中选择照片。我使用的代码如下:

调用Filepicker:

代码语言:javascript
复制
try
{
        UiApplication.getUiApplication().invokeLater(new Runnable()
        {
        public void run()
        {
             FilePicker fp = FilePicker.getInstance();
             fileListener = new FilePickListener();
             fp.setListener(fileListener);
             fp.show();
         }
             });
         }
        catch (Exception e)
        {
             UiApplication.getUiApplication().invokeLater(new Runnable()
             {
                 public void run()
                 {
                      Dialog.alert("Please check your data card..");
                 }
            });
        }

以及在我的FilePickListener:中获取文件名的方法

代码语言:javascript
复制
public void selectionDone(String str)
{       
    this.currFileName = str;

    int index = str.lastIndexOf('/');
    Dialog.alert("Filename: "+str.substring(index+1).trim());
}

这在我试过的大多数手机上都能完美地工作(它们是一些运行OS5和一些运行OS6的手机的混合体)。但在一些机型上,比如8900 (运行OS v5.0.0.411),它不能正常工作。Filepicker被调用并出现,但是当选择任何文件时,selectionDone方法不会被调用。我已经在两台不同的8900上测试过了,它们都有同样的问题。

有没有人知道为什么它在某些手机上有效,而在其他手机上不起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-05 17:47:25

您是一个已知RIM问题的受害者:FilePicker throws ControlledAccessException

该问题被标记为“已修复”。然而,没有关于他们在哪个操作系统版本中修复了它的信息。(这么有用的信息真的很难讲吗?)

但从对这个问题的评论来看:

我们在Bold 9700上的OS 5.0.0.321上遇到了完全相同的问题。但是,该问题不会出现在OS 5.0.0.464上

所以我猜他们在OS 5.0.0.464中修复了这个问题。但这并不是OS6 FilePicker appears broken in early versions of OS 6的终结。结论--不要用它。使用自定义文件浏览器屏幕来拾取文件。SDK 4.7.0中有一个名为FileExplorerDemo的示例,请查看其实现细节。

票数 0
EN

Stack Overflow用户

发布于 2011-11-04 04:10:34

这是一个已知的问题。FilePicker在某些设备上无法打开并返回错误,如8900设备。您可以通过在某些设备上添加catch (Error e) { }来捕获此错误

代码语言:javascript
复制
UiApplication.getUiApplication().invokeLater(new Runnable()
        {
        public void run()
        {
             FilePicker fp = FilePicker.getInstance();
             fileListener = new FilePickListener();
             fp.setListener(fileListener);
             fp.show();
         }
             });
         }
        catch (Exception e)
        {
             UiApplication.getUiApplication().invokeLater(new Runnable()
             {
                 public void run()
                 {
                      Dialog.alert("Please check your data card..");
                 }
            });
        }
        catch (Error e)
        {
             UiApplication.getUiApplication().invokeLater(new Runnable()
             {
                 public void run()
                 {
                      Dialog.alert("This device does not support File Picker");
                 }
            });
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7991716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档