Веб-просмотр Android и веб-страница HTML со скриптом для отображения изображенийAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Веб-просмотр Android и веб-страница HTML со скриптом для отображения изображений

Сообщение Anonymous »


Прежде чем я опубликую код, позвольте мне объяснить, что я намеревался сделать, веб-просмотр загружает html-страницу с формой для загрузки изображений, когда я выбираю одно изображение, оно отображает его идеально, и я даже добавил количество файлов, и оно показывает 1, но теперь, когда я выбираю несколько изображений, счетчик файлов равен 0, и изображения не отображаются

вот Java-код PostFragment для Android

import android.annotation.SuppressLint; импортировать android.content.Intent; импортировать android.net.Uri; импортировать android.os.Bundle; импортировать android.util.Log; // Импортируем класс журнала импортировать android.view.LayoutInflater; импортировать android.view.View; импортировать android.view.ViewGroup; импортировать android.webkit.ConsoleMessage; импортировать android.webkit.ValueCallback; импортировать android.webkit.WebChromeClient; импортировать android.webkit.WebSettings; импортировать android.webkit.WebView; импортировать android.webkit.WebViewClient; импортировать androidx.fragment.app.Fragment; импортировать android.Manifest; импортировать android.content.pm.PackageManager; импортировать androidx.core.app.ActivityCompat; импортировать androidx.core.content.ContextCompat; общественный класс PostFragment расширяет фрагмент { частный WebView WebView; частный ValueCallback mUploadMessage; частный статический окончательный int FILE_CHOOSER_RESULT_CODE = 1; частный статический окончательный int REQUEST_PERMISSION_CODE = 123; // Определите код запроса разрешения @SuppressLint("SetJavaScriptEnabled") @Override public View onCreateView (инфлятор LayoutInflater, контейнер ViewGroup, Bundle saveInstanceState) { Просмотр представления = inflater.inflate(R.layout.fragment_post,Container, false); webView = view.findViewById(R.id.WebViewIdpost); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(истина); // Добавляем сюда интерфейс JavaScript JavaScriptInterface jsInterface = новый JavaScriptInterface(getActivity()); webView.addJavascriptInterface(jsInterface, "Android"); webView.setWebViewClient(новый WebViewClient()); // Настраиваем WebChromeClient с ведением журнала сообщений консоли webView.setWebChromeClient(новый WebChromeClient() { @SuppressLint("НовыйApi") общедоступное логическое значение onShowFileChooser( Представление WebView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) { mUploadMessage = filePathCallback; openFileChooser(); вернуть истину; } @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { // Логируем сообщения консоли для отладки Log.d("Консоль WebView", consoleMessage.message()); вернуть истину; } public void onReceivedError (представление WebView, int errorCode, описание строки, StringfailingUrl) { // Обработка ошибок веб-просмотра Log.e("Ошибка WebView", "Код ошибки: " + errorCode + ", Описание: " + описание); } }); webView.loadUrl("Здесь я разместил URL-адрес"); // Измените URL-адрес на местоположение вашей HTML-формы обратный вид; } частная пустота openFileChooser () { // Проверяем, предоставлено ли разрешение если (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { // Если разрешение не предоставлено, запросите его просить разрешение(); } еще { // Разрешение уже предоставлено, откройте окно выбора файла openFilePicker(); } } частный недействительный requestPermission () { // Запрашиваем разрешение у пользователя ActivityCompat.requestPermissions(requireActivity(), новая строка[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSION_CODE); } @Override public void onRequestPermissionsResult(int requestCode, разрешения String[], int[]grantResults) { если (requestCode == REQUEST_PERMISSION_CODE) { if (grantResults.length > 0 && GrantResults[0] == PackageManager.PERMISSION_GRANTED) { // Разрешение получено, открываем выбор файла openFilePicker(); } еще { // Разрешение отклонено, обрабатываем случай, когда пользователь отказывается от разрешения // Возможно, вы захотите отобразить сообщение пользователю Log.e("Ошибка разрешения", "Отказано в доступе к внешнему хранилищу."); } } } частная пустота openFilePicker() { Намерение намерение = новое намерение (Intent.ACTION_GET_CONTENT); Intent.addCategory(Intent.CATEGORY_OPENABLE); Intent.setType("*/*"); Intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); // Разрешить выбор нескольких файлов startActivityForResult(Intent.createChooser(intent, «Выбрать файл»), FILE_CHOOSER_RESULT_CODE); } @Override public void onActivityResult (int requestCode, int resultCode, данные намерения) { если (requestCode == FILE_CHOOSER_RESULT_CODE) { если (mUploadMessage == ноль) { возвращаться; } Результаты Uri [] = WebChromeClient.FileChooserParams.parseResult(resultCode, data); mUploadMessage.onReceiveValue(результаты); mUploadMessage = ноль; } } } вот html-страница со скриптом

функция displaySelectedImages(файлы) { вар предварительный просмотр = document.getElementById('imagePreview'); for (var я = 0; я
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»