我正在我的应用程序中实现一个Filepicker,允许用户从他们的手机中选择照片。我使用的代码如下:
调用Filepicker:
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:中获取文件名的方法
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上测试过了,它们都有同样的问题。
有没有人知道为什么它在某些手机上有效,而在其他手机上不起作用?
发布于 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的示例,请查看其实现细节。
发布于 2011-11-04 04:10:34
这是一个已知的问题。FilePicker在某些设备上无法打开并返回错误,如8900设备。您可以通过在某些设备上添加catch (Error e) { }来捕获此错误
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");
}
});
}https://stackoverflow.com/questions/7991716
复制相似问题