Добавить действие в контекстное меню браузера после долгого нажатия на изображение?

Надеюсь, вы можете помочь мне со следующим:

Мне нужно добавить действие в контекстном меню, которое появляется после длительного нажатия изображения в браузере (которое содержит "Сохранить изображение", "Копировать изображение", "Просмотреть изображение", "Установить как обои", так далее.)

В результате выбора моего действия оно должно вызывать мой сервис и т. Д. Я не хочу, чтобы мое приложение перезаписывало все контекстное меню браузера, а только добавляло к нему действие. Я не нашел никакой информации о том, как это сделать. Является ли это возможным? Спасибо!

увидеть изображение

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 в разделе данных вашего фильтра намерений.

Другие вопросы по тегам