Подтвердить что ты не робот

Можно ли запускать меню общего доступа на смартфонах (через HTML/JS)?

Существует ли возможность запуска функции общего доступа в локальных браузерах на смартфонах через HTML или JavaScript?

Конечно, есть много сервисов, которые предоставляют кнопку совместного доступа. Но когда я, например, хотите поделиться сайтом на facebook, мне нужно войти в facebook в браузере, который я сейчас использую.

Почти во всех браузерах есть встроенная функция совместного использования, которая запускает системное меню для выбора того, какое приложение вы хотите использовать для совместного использования:

System share menu in android os

Этот вопрос касается: Как вызвать это меню?

Я знаю, что можно вызвать телефонный звонок с указанным префиксом в атрибуте href ссылок, например tel: или callto:. Может быть, такой ярлык для этого общего меню также существует? Или какой-нибудь код javascript? Или совершенно иначе, как это сделать?

Спасибо заранее.

4b9b3361

Ответ 1

Насколько я знаю, такой реализации в существующих браузерах на мобильных ОС нет. Поскольку интересующий меня вопрос - поиск Google показал, что в этом направлении выполняется работа:

Извините - я не знаю обходного пути.

Ответ 2

Это возможно с большой выгодой. В настоящее время доступно только в Chrome для Android и Safari (для ПК и мобильных устройств). http://caniuse.com/#feat=web-share

if (navigator.share) {
  navigator.share({
    title: document.title,
    text: "Hello World",
    url: window.location.href
  }).then(() => console.log('Successful share'))
  .catch(error => console.log('Error sharing:', error));
}

https://developers.google.com/web/updates/2016/10/navigator-share

Ответ 3

Я добавил это, поскольку все ответы кажутся устаревшими к 2018-07-16.

Это возможно, но только в нескольких браузерах (MDN Reference), реализованных с помощью API метода в navigator:

navigator
    .share({
        title: document.title,
        text: 'Hello World',
        url: window.location.href
    })
    .then(() => console.log('Successful share! 🎉'))
    .catch(err => console.error(err));

Справка Google: https://developers.google.com/web/updates/2016/10/navigator-share

Кроме того, была вещь, называемая Web Intends, которая является мертвым проектом, вы должны вместо этого использовать navigator.share.

Ответ 4

Теперь это возможно с API Web Share !

Тем не менее, он пока не получил широкой поддержки. В настоящее время он доступен только в Safari (для мобильных и настольных ПК) и Chrome для Android. См. Могу ли я использовать для деталей.

В соответствии с введением API веб-обмена для разработчиков Google, необходимо помнить о нескольких вещах:

  • ваша страница должна обслуживаться по HTTPS
  • Вы можете вызывать navigator.share(…) в ответ на действие пользователя, такое как щелчок (т.е. вы не можете вызвать его при загрузке страницы)
  • Вы должны определить его, если он недоступен на платформе ваших пользователей (например, через navigator.share !== undefined)

В статье Google Developers также отмечается, что URL-адреса, используемые совместно с Share API, не обязательно должны находиться в вашем собственном домене - вы можете поделиться любым URL-адресом.

Собрав все это вместе, вы можете использовать что-то вроде этого, которое использует API-интерфейс Share, если он доступен, и отступает к отправке электронного письма, если это не *:

function createShareButton() {
  const btn = document.createElement("button");

  const title = document.title;
  const text = "Check this out!";
  const url = window.location.href;

  btn.innerText = "share" in navigator ? "Share" : "Share via e-mail";

  btn.onclick = () => {
    if (navigator.share !== undefined) {
      navigator
        .share({
          title,
          text,
          url
        })
        .then(() => console.log("Shared!"))
        .catch(err => console.error(err));
    } else {
      window.location = 'mailto:?subject=${title}&body=${text}%0A${url}';
    }
  };

  return btn;
}

document.title = "Demo";
document.body.appendChild(createShareButton());

Ответ 5

Вы можете использовать метод WebView.addJavascriptInterface() для Android.

Сначала вам нужно будет написать класс, который запускает намерение открыть меню совместного доступа (посмотреть здесь), а затем реализовать этот класс используя вызов addJavascriptInterface(). После этого все, что вам нужно сделать, это вызвать метод из вашего Javascript.