Добавить действие в контекстное меню браузера после долгого нажатия на изображение?
Надеюсь, вы можете помочь мне со следующим:
Мне нужно добавить действие в контекстном меню, которое появляется после длительного нажатия изображения в браузере (которое содержит "Сохранить изображение", "Копировать изображение", "Просмотреть изображение", "Установить как обои", так далее.)
В результате выбора моего действия оно должно вызывать мой сервис и т. Д. Я не хочу, чтобы мое приложение перезаписывало все контекстное меню браузера, а только добавляло к нему действие. Я не нашел никакой информации о том, как это сделать. Является ли это возможным? Спасибо!
3 ответа
Короче говоря, вы не можете сделать это. Браузер - это просто приложение, подобное вашему. Если бы вы разрабатывали браузер, как бы вы предоставили такую функциональность в приложении браузера?
Android-гуру: я что-то здесь упускаю?
Как примечание, самое близкое, что вы можете сделать, это определить Intent.ACTION_VIEW и ресурсы и надеяться, что браузер использует IntentChooser
В этом случае ваше приложение (вместе с другими) будет отображаться.
Общие действия определяются системой Android Intent (http://developer.android.com/reference/android/content/Intent.html).
Хорошо, если вы хотите добавить контекстное меню к веб-представлению, вам нужно будет сделать следующее. В основном классе приложения, который расширяет DroidGap, вам нужно добавить следующую строку в метод onCreate:
this.registerForContextMenu(this.appView);
тогда вам нужно добавить следующие два метода в один и тот же класс Java:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example, menu);
}
Конечно, вам нужно обновить R.menu.example на имя файла XML вашего меню.
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.settings:
this.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
return true;
case R.id.help:
this.appView.sendJavascript("navigator.notification.alert('No help')");
return true;
default:
return super.onContextItemSelected(item);
}
}
и в этом методе вам нужно будет обрабатывать все действия с опциями меню.
В соответствии с вышеизложенным. Нет, вы не можете добавить пункт меню в любое приложение. Когда вы используете call и видите Skype, просто у Skype есть возможности для обработки вызовов. И зарегистрировался в Манифесте. Следовательно, когда действие вызова инициировано, все приложения с зарегистрированным манифестом будут предоставлены в качестве опции.
Подобное поведение может быть достигнуто вашим приложением, просто объявив соответствующие поля в файле манифеста. Например, если вы хотите обработать изображения, все, что вам нужно сделать, это обработать MIME в разделе данных вашего фильтра намерений.