2013-09-24 3 views
0

Я разрабатываю приложение с веб-просмотром. У меня есть элемент fileupload, и мое приложение позволяет выбрать «камеру» или «галерею», отображая AlertDialog в методе «openfilechooser». Вот что я делаю:

-I кран на FileUpload элементе
-An AlertDialog выскакивает читать мой выбор «камеры» или «галереи»
-I передумать и отказаться выбором файл и нажмите кнопку «Android Back Button»

Android «Back Button» заставляет javascript останавливаться

Когда я нажимаю кнопку «Назад», все javascript останавливается, и моя страница перестает отвечать.

Есть ли причина для остановки javascript? Заранее спасибо

ответ

0

Я попробовал несколько трюков и, наконец, нашли решение.

Элемент FileUpload нуждается в «ValueCallback» после всех этих вызовов методов. Так что «onActivityResult» должен вернуть результат элементу загрузки файла. Но метод «onActivityResult» не может быть вызван, когда пользователь отменяет диалог предупреждения. Это приводит к тому, что элемент fileupload генерирует ошибку.

Я добавил «setOnCancelListener» к моему оповещения диалога, как это:

.setOnCancelListener(new DialogInterface.OnCancelListener() { 

    @Override 
    public void onCancel(DialogInterface dialog) { 
    mUploadMessage.onReceiveValue(null); 
    mUploadMessage = null; 
    } 
}) 

Вы должны вернуть по крайней мере, «нулевой» для элемента загрузки файла, чтобы сохранить работу. В противном случае файловые киоски, и это заставляет все javascript останавливаться.

я поймала еще один случай, который делает FileUpload стойло:
- отводы пользователя на FileUpload элемент
- ВЫБИРАЕТ выбор (Cam или Galller не имеет значения)
- Cam или галерея показывает, и пользователь нажимает «Назад Кнопка»

Это возвращает RESULT_CANCELED код к методу «onActivityResult», и вы должны справиться с этим, как это:

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
     Intent intent) { 
    try { 
     super.onActivityResult(requestCode, resultCode, intent); 

     if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK 
       && intent != null) 
      mUploadMessage.onReceiveValue(intent.getData()); 
     else 
      mUploadMessage.onReceiveValue(null); 
    } catch (Exception e) { 
     Log.e("Error", e.getLocalizedMessage()); 
     mUploadMessage.onReceiveValue(null); 
    } finally { 
     mUploadMessage = null; 
    } 
} 

mUploadMessage является защиту ined следующим образом:

private ValueCallback<Uri> mUploadMessage; 
0

Если вы хотите использовать кнопку «Назад» в веб-представлении, вы должны объявить перед намерением просмотреть веб-представление. Вы должны реализовать метод onBackPrasses или onKeyPressed и получить значение KEY. Вы можете найти ответ на эту ссылку Enable back button in WebView

Также для включения JavaScript

WebView myWebView = (WebView) findViewById(R.id.webview); 
WebSettings webSettings = myWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
Смежные вопросы