Как составить список вашего приложения Cordova с помощью меню в Android и обработать событие намерения

Android, открытый с

Если мы хотим, чтобы наше приложение появлялось в открытом доступе со списком Android, нам нужно разрешить это намерение для нашего AndroidManifest.xml файл.

Обязательные плагины

  1. Cordova-заказ конфигурации : Нам нужно изменить стандартную конфигурацию AndroidManifest.xml, но мы не будем манипулировать ею вручную, так как изменения могут быть потеряны в будущих сборках, поэтому нам нужно использовать плагин, который добавляет пользовательскую конфигурацию каждый раз, когда мы собираем приложение с разными версиями ,
  2. Cordova-плагин-Намерение : Когда конфигурация предыдущего плагина готова, нам нужно манипулировать файлом Intents при каждом вызове (когда пользователь выполняет Open With из другого приложения, а наше приложение не инициализируется и т. Д.)
  3. Терпение!

Прежде чем продолжить

Нам нужно знать, что мы собираемся делать и почему.

Нам нужно изменить фильтр намерений и добавить следующие разрешения (этот явный пример заставит наше приложение открывать все виды файлов, узнайте больше о mimetypes для Android здесь для фильтрации по вашим необходимым расширениям)


Теперь проблема в том, что мы не можем просто добавить предыдущий блок кода в наш config.xml потому что он не будет распознан, вот где cordova-custom-config поможет нам напрямую изменить AndroidManifest.xml от config.xml,

Наконец, мы будем использовать cordova-plugin-intent для манипулирования событиями намерений для нашего приложения из javascript.

Включить использование Intent в вашем приложении

Намерение — это объект обмена сообщениями, который можно использовать для запроса действия у другого компонента приложения. Загрузите необходимые плагины Cordova:

# Install custom configuration
$ cordova plugin add cordova-custom-config
# Then install the intent handler
$ cordova plugin add https://github.com/napolitano/cordova-plugin-intent

Затем необходимо разрешить использование настраиваемой конфигурации для проекта, добавив xmlns:android="http://schemas.android.com/apk/res/android" свойство узла виджета в config.xml файл, виджет должен выглядеть так:


Теперь измените файл config.xml и добавьте intent-фильтр, используя блок config (плагин custom-config добавит содержимое блока config непосредственно в AndroidManifest.xml файл без удаления любого существующего узла):

Примечание. Вам необходимо создать дополнительный узел фильтра намерений в вашем AndroidManifest.xml файл, если вы добавите эти свойства в существующий фильтр намерений, ваше приложение будет скомпилировано, но вы не увидите значок, чтобы запустить приложение позже.



Если вы решили создать свое приложение, ваш AndroidManifest.xml теперь должен включать свойства внутри узла фильтра намерений:

Фильтр намерений открыт с настройками меню

И если вы инициируете открытие с помощью (любого приложения) и mimeType верен, ваше приложение должно появиться в этом списке сейчас, но нам все еще нужно манипулировать тем, как будет обрабатываться открытый файл с помощью Javascript.

Handle Intents

Вот когда нам поможет кордова-плагин-намерение. Нам нужно что-то делать с файлами (информацией о файлах), которые мы получаем, и мы будем обрабатывать их, используя следующий код (после события onDeviceReady):

document.addEventListener('deviceready', function(){
var HandleIntent = function (Intent) {
console.log(intent);
// With intent you'll do almost everything
if(Intent.hasOwnProperty('data')){
// Do something with the File
}else{
// this will happen in getCordovaIntent when the app starts and there's no
// active intent
console.log("The app was opened manually and there's not file to open");
}
};
// Handle the intent when the app is open
// If the app is running in the background, this function
// will handle the opened file
window.plugins.intent.setNewIntentHandler(HandleIntent);
// Handle the intent when the app is not open
// This will be executed only when the app starts or wasn't active
// in the background
window.plugins.intent.getCordovaIntent(HandleIntent, function () {
alert("Error: Cannot handle open with file intent");
});
}, false);

Объект намерения будет выглядеть так:

{
"action": "android.intent.action.SEND_MULTIPLE",
"clipItems": [
{
"uri": "file:///storage/emulated/0/Download/example-document.pdf",
"type": "application/pdf",
"extension": "pdf"
},
{
"uri": "file:///storage/emulated/0/Download/example-archive.zip",
"type": "application/zip",
"extension": "zip"
}
{
"uri": "content://media/external/images/media/29",
"type": "image/jpeg",
"extension": "jpeg"
}
],
"flags": 390070273,
"type": "*/*",
"component": "ComponentInfo{com.example.droid/com.example.droid.MainActivity}",
"extras": "Bundle[mParcelledData.dataSize=596]"
}

Узнайте больше о Плагин Cordova намерения в официальном хранилище.

Создайте свое приложение, тогда вы увидите свое приложение в списке с открытым меню и сможете сделать что-то вроде открытия файла с вашим приложением с заданной информацией, получайте удовольствие!

Тестовое задание

Ссылка на основную публикацию
Adblock
detector