Мы разрабатываем пользовательское приложение для Android.
Приложение кодируется на JavaScript, и мы закодировали плагин в Java Who's Rely, чтобы прочитать порт USB на планшете Android. JavaScript App. Конденсатор не может распознать его как плагин, и, следовательно, мы не можем назвать его функцией. src = "https://i.sstatic.net/o0sbxma4.png"/>
команды Bash для инициализации проекта
mkdir mon-plugin-capacitor
cd mon-plugin-capacitor
npm init
npm install @capacitor/core @capacitor/android
npm install --save-dev @capacitor/cli
npm install --save-dev vite
npx cap init MonPluginCapacitor com.example.plugin
npx cap add android
npm run build
src/app.js
import { Echo } from './echo-plugin.js';
document.addEventListener('DOMContentLoaded', () => {
document.getElementById('testButton').addEventListener('click', async () => {
try {
const result = await Echo.echo({ value: 'Bonjour depuis Capacitor!' });
document.getElementById('result').textContent = result.value;
} catch (error) {
document.getElementById('result').textContent = Erreur: ${error.message};
}
});
});
src/echo-plugin.js
// Enregistrement du plugin
const Echo = registerPlugin('Echo');
export { Echo };
src/index.js
export * from './echo-plugin';
android/app/src/main/java/com/example/plugin/echoplugin.java
package com.example.plugin;
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
@CapacitorPlugin(name = "Echo")
public class EchoPlugin extends Plugin {
@PluginMethod
public void echo(PluginCall call) {
String value = call.getString("value");
JSObject ret = new JSObject();
ret.put("value", value);
call.resolve(ret);
}
}
android/app/src/main/java/com/example/plugin/mainactivity.java
package com.example.plugin; // Votre package réel ici
import android.os.Bundle;
import com.getcapacitor.BridgeActivity;
import com.getcapacitor.Plugin;
import java.util.ArrayList;
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Enregistrez les plugins ici
// Ajoutez cette ligne pour enregistrer votre plugin
registerPlugin(EchoPlugin.class);
}
}
index.html
Test du Plugin Echo
body {
font-family: Arial, sans-serif;
margin: 20px;
padding: 0;
}
h1 {
color: #333;
}
button {
background-color: #4CAF50;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 10px 0;
cursor: pointer;
border-radius: 4px;
}
#result {
margin-top: 20px;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
min-height: 50px;
background-color: #f9f9f9;
}
Test du Plugin Echo
Tester le plugin
Résultat apparaîtra ici...
document.addEventListener('deviceready', function() {
document.getElementById('testButton').addEventListener('click', async () => {
try {
// Accès au plugin natif via Capacitor
const result = await window.Capacitor.Plugins.Echo.echo({ value: 'Bonjour depuis Android!' });
document.getElementById('result').textContent = result.value;
} catch (error) {
document.getElementById('result').textContent = Erreur: ${error.message};
console.error('Erreur plugin:', error);
}
});
}, false);
// Fallback pour tester si deviceready n'est pas déclenché
document.getElementById('testButton').addEventListener('click', async () => {
if (window.Capacitor && window.Capacitor.Plugins && window.Capacitor.Plugins.Echo) {
try {
const result = await window.Capacitor.Plugins.Echo.echo({ value: 'Bonjour depuis Android!' });
document.getElementById('result').textContent = result.value;
} catch (error) {
document.getElementById('result').textContent = Erreur: ${error.message};
console.error('Erreur plugin:', error);
}
} else {
document.getElementById('result').textContent = "Plugin Echo non disponible. Assurez-vous d'exécuter sur un appareil.";
}
});
Подробнее здесь: https://stackoverflow.com/questions/795 ... on-android