Я пытался заставить мое первое приложение для Android работать. У меня есть одно действие, которое использует веб-просмотр, и я использую его для открытия веб-страниц, на которых есть html-формы.Android App-Popup Menu с камерой App
Была проблема с тем, что кнопка «Выбрать файл» (для файловых входов) работала, но я, наконец, решил ее благодаря помощи, размещенной здесь File Upload in WebView. Оттуда, я в значительной степени использую Main Activity java code, которые они сделали доступными на Github.
Моя фактическая проблема заключается в том, что при нажатии кнопки ввода файла у меня нет возможности использовать камеру, которую я хотел бы иметь. Сначала я подумал, что это может быть связано с необходимостью разрешения камеры для приложения, но я ее реализовал, и я ошибся в этом. Проблема здесь в том, что я неопытный с для намерений получить всплывающее меню, как:
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
Некоторых рекомендации по найти способ, чтобы получить опцию «Камера», чтобы придумать буду высоко ценятся.
Позвольте мне показать вам, что я имею в виду, открывая ту же самую html-форму в Chrome и мое приложение на двух разных версиях ОС Android (4.4.4 и 6.0). Использование моей вкладки Samsung Galaxy, работающей под управлением Android 4.4.4. При открытии страницы, которая имеет форму HTML, на Google Chrome, нажав Выбрать файл кнопку , I get this menu
Это то, что я хочу, чтобы в моем приложении
адресности, используя тот же URL и отображаются его в моем приложении (на 4.4.4), используя мой WebView, при нажатии на Выбрать кнопку Файл, I get this menu
(Кроме того, я попытался щелчки, что Выберите кнопку Файл на мое приложение, на Android 6.0 эмуль АТОР, and it goes straight to the gallery, и нет никакой возможности камеры есть):
Это соответствующая часть кода:
//For Android 4.1+
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
mUM = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i, "Choose an Image please"), MainActivity.FCR);
}
//For Android 5.0+
public boolean onShowFileChooser(
WebView webView, ValueCallback<Uri[]> filePathCallback,
FileChooserParams fileChooserParams){
if(mUMA != null){
mUMA.onReceiveValue(null);
}
mUMA = filePathCallback;
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null){
File photoFile = null;
try{
photoFile = createImageFile();
takePictureIntent.putExtra("PhotoPath", mCM);
}catch(IOException ex){
Log.e(TAG, "Image file creation failed", ex);
}
if(photoFile != null){
mCM = "file:" + photoFile.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
}else{
takePictureIntent = null;
}
}
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
contentSelectionIntent.setType("image/*");
Intent[] intentArray;
if(takePictureIntent != null){
intentArray = new Intent[]{takePictureIntent};
}else{
intentArray = new Intent[0];
}
Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
startActivityForResult(chooserIntent, FCR);
return true;
}