|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
Comment intégrer du code Kotlin dans mon appli |
Started by Jean Turcotte, Jun., 04 2025 4:19 PM - 9 replies |
| |
| | | |
|
| |
Registered member 1,332 messages |
|
Posted on June, 04 2025 - 4:19 PM |
Bonjour, je déplore le fait que pcsoft ne fournisse aucun exemple d'utilisation des nouveautés importantes comme le code Kotlin.
J'essaie de tester du code pris sur Internet mais peut importe le code que j'utilise, j'ai toujours l'erreur suivante; - Le prototype de la fonction native Kotlin n'a pas pu être schématisé...
Je me doute bien qu'il y a des erreurs avec le code mais comment faire pour la déceler. Voici le code de suppression du Presse-Papier trouvé sur le WEB;
import android.content.ClipboardManager import android.content.Context import android.content.Context.CLIPBOARD_SERVICE import android.os.Build import android.os.Bundle import android.os.VibrationEffect import android.os.Vibrator import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)
val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
if (clipboardManager.hasPrimaryClip()) { // Supprimer le contenu du presse-papiers clipboardManager.clearPrimaryClip()
// Optionnel : Vibrer l'appareil pour indiquer que le presse-papiers a été vidé (pour un feedback utilisateur) val vibrator = getSystemService(VIBRATOR_SERVICE) as Vibrator if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { vibrator.vibrate(VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE)) } else { vibrator.vibrate(200) } } else { // Le presse-papiers est déjà vide // Vous pouvez afficher un message à l'utilisateur ou prendre une autre action } } }
-- Jean Turcotte WX 2025 |
| |
| |
| | | |
|
| | |
| |
Registered member 548 messages |
|
Posted on June, 04 2025 - 8:52 PM |
salut Jean te fatigue pas, depuis la maj 1 2025, plus moyen de mettre du kotlin, j'ai fait remonter au support, ils m'ont donné un correctif, et la mise a jour suivante, terminé, de plus le correctif marchait mal
-- José |
| |
| |
| | | |
|
| | |
| |
Registered member 548 messages |
|
Posted on June, 04 2025 - 9:27 PM |
j'ai oublié, moi aussi, j'ai le message, et la compilation plante si je desactive pas la collection de procedures avec du kotlin donc, je les ai refaites en java
-- José |
| |
| |
| | | |
|
| | |
| |
Registered member 3,705 messages |
|
Posted on June, 04 2025 - 9:31 PM |
Salut Jean, Je comprends pas trop ta demande Si ton but est de vider le presse papier alors il suffit de faire
VersPressePapier("") En effet, toutes les fonctions de presse papier du wlanguage fonctionne sur Android et iOS. Sinon pour répondre à ta question Il me semble que ton code est du Java qui contient une classe Le kotlin ressemble beaucoup au Java Les lignes suivantes peuvent d'après moi être supprimés
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Optionnel : Vibrer l'appareil pour indiquer que le presse-papiers a été vidé (pour un feedback utilisateur) val vibrator = getSystemService(VIBRATOR_SERVICE) as Vibrator if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { vibrator.vibrate(VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE)) } else { vibrator.vibrate(200) } En plus, il faut souvent rajouter
// Récupération de l'activité en cours getActiviteEnCours() // Récupération du "Context" en cours getContexteApplication() // Ré getView("BTN_Bouton1") Comme indiqué dans l'aide Après lors de la compilation le compilateur t'indique normalement l'emplacement de l'erreur Ainsi que l'erreur (En tout cas c'est comme ça avec Java) Ce qui aide à modifier le code en conséquence Par contre je ne pourrais t'aider plus car l'utilisation du kotlin n'existe que depuis la version 28 De WM et je me suis arrêté à la 25 |
| |
| |
| | | |
|
| | |
| |
Registered member 1,332 messages |
|
Posted on June, 04 2025 - 10:36 PM |
Bonjour et merci à vous deux pour votre aide. Je pense ne pas avoir été clair dans ma demande.
La commande VersPressePapier(") ajoute une ligne vide au pressePapier mais si tu regardes le pressepapier Samsung (dans le cas d'un mobile Samsung) tu y verras l'historique de toutes les valeurs copiées au Presse-Papier. Pas vraiment sécuritaire, surtout si tu essaie de créer une appli qui gère la sésurité.
Il esiste du code en Kotlin et java pour vider le pressePapier Samsung et donc, de rendre ton appli sécuritaire.
L'exemple en Kotlin était assez simple. Je ne peux malheureusement pas passer par le ST car j'ai downgradé ma version à l'update 2 et depuis, je ne peux plus envoyer de demande.
-- Jean Turcotte WX 2025 |
| |
| |
| | | |
|
| | |
| |
Registered member 1,332 messages |
|
Posted on June, 05 2025 - 3:58 AM |
Je vous fais un suivi puisque j'ai réussi à bidouiller un code qui tend à fonctionner. Voici le code que j'ai testé;
import android.content.ClipboardManager; import android.content.Context; import android.widget.Toast;
public static void Procedure2() { Context context = getApplicationContext(); try { ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); if (clipboardManager != null) { clipboardManager.clearPrimaryClip(); Toast.makeText(context, "Presse-papiers vidé avec succès", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, "Impossible d'accéder au presse-papiers", Toast.LENGTH_SHORT).show(); } } catch (Exception e) { Toast.makeText(context, "Erreur lors de la vidange du presse-papiers", Toast.LENGTH_SHORT).show(); } }
J'obtiens le toast "Presse-papiers vidé avec succès", ce qui m'indique que le presse-papier de mon appli à bel et bien été supprimé mais celui du clavier Samsung contient toujours l'info. Ce qui me fait dire que si je pouvais récupérer le Context du clavier Samsung, je pourrais probablement supprimer son presse-papier,
des idées pour la suite?
-- Jean Turcotte WX 2025 |
| |
| |
| | | |
|
| | |
| |
Registered member 3,705 messages |
|
Posted on June, 05 2025 - 6:22 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 1,332 messages |
|
Posted on June, 05 2025 - 12:18 PM |
Salut Popoy, merci pour l'info.
J'ai intégré le code mais j'obtiens une erreur avec 'activity' alors j'ai ajouté le code suivant pour déclarer l'Activity;
int requestCode = 999; Activity activity = getActiviteEnCours(); Intent intent = new Intent(StorageManager.ACTION_CLEAR_APP_CACHE); activity.startActivityForResult(intent, requestCode);
J'ai maintenant une erreur pour StorageManager. Je me demande si je dois imponter une library pour StorageManager et si oui, laquelle?
Je déteste java...
-- Jean Turcotte WX 2025 |
| |
| |
| | | |
|
| | |
| |
Registered member 3,705 messages |
|
Posted on June, 05 2025 - 3:57 PM |
Salut oui l'aide d'Android indique
java.lang.Object android.os.storage.StorageManager Comme indiqué sur cette page https://developer.android.com/reference/android/os/storage/StorageManager Sur la même page en kotlin se serait
kotlin.Any android.os.storage.StorageManager Dans les 2 langages il y aurait un import
C'est un peu le défaut des codes trouvé sur internet Car les autres EDI ont en général des outils d'ajout des imports automatique Ce que n'as pas WMMessage modified, June, 05 2025 - 4:00 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 1,332 messages |
|
Posted on June, 05 2025 - 5:24 PM |
Salut, j'ai corrigé le code et j'ai pu compiler mais ça ne règle pas mon problème car le presse-Papier reste toujours plein.
J'ai fouillé tout l'avant-midi pour finalement trouvé qu'il s'agissait d'une énorme faille de sécurité sur plusieurs produits Samsung. Il semble que l'entreprise soit avisée et travaille sur un correctif. Cette une énorme brèche de sécurité car non seulement le presse-papier Samsung ne supprime pas son contenu automatiquement, mais il n'a aucune limite de stockage. Tout ce qu'on tape se retrouve dans ce presse-papier en dur, Login, mot de passe etc... bravo Samsung...
En attendant un correctif sérieux de Samsung, j'ai implémenté une écriture de 200 données aléatoires de plus de 24 caractères qui s'ajoute au presse-papier 10 sec après avoir copier-coller ma donnée à utiliser. Pas très chic mais améliore tout de même la sécurité de mon appli mais rend quasi-inutilisable le presse-papier. 
-- Jean Turcotte WX 2025 |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|