Как я могу заставить FilePicker работать должным образом на определенных телефонах BlackBerry? - PullRequest
0 голосов
/ 03 ноября 2011

Я использую 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 (под управлением ОС v5.0.0.411), он не работает должным образом.Filepicker вызывается и появляется, но когда выбирается любой файл, метод selectionDone не вызывается.Я проверил это на двух отдельных 8900-х, и у обоих одинаковая проблема.

У кого-нибудь есть идеи, почему он работает на определенных телефонах, а не на других?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2011

Вы являетесь жертвой известной проблемы RIM: FilePicker выдает исключение ControlledAccessException .

Эта проблема помечена как «исправлена».Однако нет информации, в какой версии ОС они это исправили.(Разве так сложно рассказать такую ​​полезную информацию?)

Но из комментариев к вопросу:

У нас такая же проблема с ОС 5.0.0.321 на Bold9700. Однако эта проблема НЕ появляется в OS 5.0.0.464

, поэтому я думаю, что они исправили ее в OS 5.0.0.464.Но это еще не конец - в OS 6 FilePicker снова появляется сбой в ранних версиях OS 6 .Вывод - просто не используйте его.Используйте пользовательский экран браузера файлов, чтобы выбрать файл.В SDK 4.7.0 есть пример с именем FileExplorerDemo, проверьте его на предмет деталей реализации.

0 голосов
/ 04 ноября 2011

Это известная проблема.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");
                 }
            });
        }
...