Au coeur du système Android – créer une application cachée
Voici le premier billet dans la série sur Au coeur du système Android.
Introduction
Il y a quelques temps, je vous avais expliqué comment accéder à un menu caché dans Android. Cette astuce a sûrement donné des idées à certains d’entre vous. Et vous vous demandez donc : comment créer une application cachée dans Android ?
Solution
Partons du tutoriel officiel : Hello World. Il faut créer un récepteur d’écouter et traiter « les codes secrets » saisis sur le téléphone :
package com.example.helloandroid; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class HelloWorldReceiver extends BroadcastReceiver { private static String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE"; public void onReceive(Context context, Intent intent) { Log.i("HelloWorldReceiver", "intent.action="+intent.getAction()); if (intent.getAction().equals(SECRET_CODE_ACTION)) { Intent i = new Intent(Intent.ACTION_MAIN); i.setClass(context, HelloWorld.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } }
Vous pouvez voir que c’est le récepteur qui se charge de lancer l’application HelloWorld.
Ensuite, il faut modifier le fichier AndroidManifest.xml pour cacher l’application HelloWorld et paramétrer le code qui permet de lancer l’application :
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloandroid" android:versionCode="1" android:versionName="1.0 (secret)"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloWorld" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <!-- category android:name="android.intent.category.LAUNCHER" /--> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <receiver android:name=".HelloWorldReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SECRET_CODE" /> <data android:scheme="android_secret_code" android:host="1337" /> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="3" /> </manifest>
L’application HelloWorld ne fait alors plus partie de la catégorie « launcher » mais « default ». Cela a pour conséquence qu’elle n’est plus visible dans la liste des applications du lanceur d’application.
Pour lancer l’application, il suffi d’ouvrir l’application de téléphonie et de composer le numéro suivant : *#*#1337#*#*. L’application HelloWorld se lance alors.
Conclusion
Vous êtes maintenant armé pour créer des applications invisibles. Il suffira juste d’indiquer à vos utilisateurs le code à saisir pour démarrer cette dernière. 😉
https://blog.lecacheur.com/2010/03/20/au-coeur-du-systeme-android-creer-une-application-cachee/AndroidDéveloppementandroidVoici le premier billet dans la série sur Au coeur du système Android. Introduction Il y a quelques temps, je vous avais expliqué comment accéder à un menu caché dans Android. Cette astuce a sûrement donné des idées à certains d'entre vous. Et vous vous demandez donc : comment créer une...SeBSébastien LECACHEUR23r0@laposte.netAdministratorLe weblogue de SeB
Vraiment très intéressant …
mais je suis débutant .. pouvez-vous préciser comment vous intégrez ce code au code de helloworld ?
Merci d’avance …
______________________
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}________________________
cloclo,
Si tu as repris le HelloWorld Android et qu’il fonctionne. Tu n’as qu’à ajouter la classe HelloWorldReceiver ci-dessus et remplacer le contenu du fichier AndroidManifest.xml par celui que je donne. Il n’y rien d’autre à faire.