Aller au contenu

Une application impossible a quitter


naholyr

Recommended Posts

Bonjour,

Pour mon neveu trisomique qui ne cesse de nous réclamer un téléphone, je pensais développer une application Android dédié à son usage, et lui offrir un téléphone pas cher avec forfait bloqué. En effet on a l'année dernière tenté les téléphones "ultra-simples" mais tous ont une fonction pour appeler les secours, ce qui fait qu'au final il ne cesse d'appeler les pompiers pour rien, et s'est déjà fait couper sa ligne 2 fois en 6 mois (après on n'a pas renouvelé).

Quel usage ?

- quelques gros boutons, chaque bouton = 1 appel (avec le portrait de la personne à appeler par exemple)

- impossible à configurer ou à quitter sans le mot de passe

- monkey-proof (il va taper n'importe où n'importe comment dans tous les sens parfois, il ne faut pas que le fonctionnement de l'appli en soit altéré)

J'ai deux problèmes :

- lors d'un appel, il y aura toujours l'appli "téléphone" d'Android de base qui va se lancer non ? Il faudrait voir ce qu'il peut faire à partir de cette appli, mais j'ai peur que ce ne soit une faille qu'il finira par exploiter volontairement ou non. Note que cette fois pour appeler les pompiers il devra composer leur numéro, ce qui limitera les risques.

- comment rendre une application "impossible à quitter" ? Que ce soit par le bouton "home", "retour", ou quoi que ce soit d'autre (j'exclus bien sûr les task-killer, de toute façon il n'est pas censé y en avoir un sur ce tél, et l'appli ne sera jamais assez gourmande pour se faire tuer par le système)...

Je suis preneur de vos idées !

Lien vers le commentaire
Partager sur d’autres sites

la seule application "impossible à quitter" est le home screen

car le bouton "home" ramène toujours sur l'écran d'accueil, impossible à rattrapper.

il y a peu être moyen de se substituer à l'application qui se lance lorsque l'on passe un appel téléphonique

surement un Intent/broadcast à écouter...

Mais ce n'est peut être faisable que par une appli "système" (qui utilise le même user id que le système, et qui est signée avec la même clé que le système)

Mais sinon, il est vraiment trisomique? Ou c'est juste une figure de style?

Parce que là je vois 2 choses:

- Si il est vraiment trisomique, un téléphone est un peu inutile... Une surveillance constante est nécessaire.

- Si il est juste assez con pour appeler les pompiers pour rien, je pense qu'il n'est pas "digne" d'avoir un téléphone...

Lien vers le commentaire
Partager sur d’autres sites

Non il est vraiment trisomique :)

Il parle assez bien pour avoir des choses à dire et envie de les raconter quand il est seul au foyer, mais il ne faut surtout pas qu'il ait le choix du numéro sinon il tape n'importe quoi (pour faire "comme si").

L'idée d'une home est peut être une bonne piste...

Sent from my HTC Hero using Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

J'ai une petite application qui est destiné à etre utilisé sur un telephone de demonstration.

c'est une home qui affiche la page google.com et qui ne permet de rien faire d'autre en dehors de se balader dans la webview.

la seul solution pour quiter l'application c'est de tapper un mdp.

je travail encore dessus mais je peu mettre le code dans l'état a disposition

http://ovhoo.com//content/DEV/android/lockeddemo.apk

Lien vers le commentaire
Partager sur d’autres sites

Je confirme aussi cette idée de Home mis par défaut.

Il semble simple de faire des raccourcis vers des contacts pour passer des appels, ou même laisse un accès à quelques applis ( des jeux par ex)

(évidemment pas le Market, car EasyHome ou HomeSwitcher seraient faciles à trouver, je ne me rends pas compte des possibilités de déduction et de compréhension d'Android par un trisomique.)

Par contre effectivement, une fois que l'on lance un appel, je me demande si il est possible de reprendre la main sur le dialer, c'est une bonne question!

Lien vers le commentaire
Partager sur d’autres sites

Voilà, il ne reste plus qu'à trouver le receiver/activity qui réagit à un appel téléphonique

<?xml version="1.0" encoding="UTF-8"?>
<manifest android:sharedUserId="android.uid.phone" android:versionCode="8" android:versionName="2.2.1" android:sharedUserLabel="@string/dialerIconLabel" package="com.android.phone"
 xmlns:android="http://schemas.android.com/apk/res/android">
   <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
   <original-package android:name="com.android.phone" />
   <protected-broadcast android:name="android.intent.action.SERVICE_STATE" />
   <protected-broadcast android:name="android.intent.action.RADIO_TECHNOLOGY" />
   <protected-broadcast android:name="android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED" />
   <protected-broadcast android:name="android.intent.action.SIG_STR" />
   <protected-broadcast android:name="android.intent.action.ANY_DATA_STATE" />
   <protected-broadcast android:name="android.intent.action.DATA_CONNECTION_FAILED" />
   <protected-broadcast android:name="android.intent.action.SIM_STATE_CHANGED" />
   <protected-broadcast android:name="android.intent.action.NETWORK_SET_TIME" />
   <protected-broadcast android:name="android.intent.action.NETWORK_SET_TIMEZONE" />
   <protected-broadcast android:name="android.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
   <protected-broadcast android:name="android.intent.action.ACTION_MDN_STATE_CHANGED" />
   <protected-broadcast android:name="android.provider.Telephony.SPN_STRINGS_UPDATED" />
   <uses-permission android:name="android.permission.BROADCAST_STICKY" />
   <uses-permission android:name="android.permission.CALL_PHONE" />
   <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
   <uses-permission android:name="android.permission.WRITE_SETTINGS" />
   <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
   <uses-permission android:name="android.permission.READ_CONTACTS" />
   <uses-permission android:name="android.permission.WRITE_CONTACTS" />
   <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
   <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
   <uses-permission android:name="android.permission.ADD_SYSTEM_SERVICE" />
   <uses-permission android:name="android.permission.VIBRATE" />
   <uses-permission android:name="android.permission.BLUETOOTH" />
   <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
   <uses-permission android:name="android.permission.REORDER_TASKS" />
   <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
   <uses-permission android:name="android.permission.WAKE_LOCK" />
   <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
   <uses-permission android:name="android.permission.STATUS_BAR" />
   <uses-permission android:name="android.permission.READ_SMS" />
   <uses-permission android:name="android.permission.WRITE_SMS" />
   <uses-permission android:name="android.permission.SET_TIME_ZONE" />
   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />
   <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
   <uses-permission android:name="android.permission.DEVICE_POWER" />
   <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
   <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
   <uses-permission android:name="android.permission.BROADCAST_SMS" />
   <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" />
   <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
   <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
   <uses-permission android:name="android.permission.SHUTDOWN" />
   <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
   <application android:label="@string/dialerIconLabel" android:icon="@drawable/ic_launcher_phone" android:name="PhoneApp" android:persistent="true">
       <provider android:name="IccProvider" android:readPermission="android.permission.READ_CONTACTS" android:writePermission="android.permission.WRITE_CONTACTS" android:multiprocess="true" android:authorities="icc" />
       <activity android:label="@string/emergencyDialerIconLabel" android:name="EmergencyDialer" android:screenOrientation="nosensor">
           <intent-filter>
               <action android:name="com.android.phone.EmergencyDialer.DIAL" />
               <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
       </activity>
       <activity android:name="ADNList" />
       <activity android:label="@string/simContacts_title" android:name="SimContacts">
           <intent-filter>
               <action android:name="android.intent.action.VIEW" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:mimeType="vnd.android.cursor.item/sim-contact" />
           </intent-filter>
       </activity>
       <activity android:label="@string/fdnListLabel" android:name="FdnList">
           <intent-filter>
               <action android:name="android.intent.action.VIEW" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:mimeType="vnd.android.cursor.item/sim-contact" />
           </intent-filter>
       </activity>
       <activity android:theme="@android:style/Theme.NoDisplay" android:name="OutgoingCallBroadcaster" android:permission="android.permission.CALL_PHONE" android:configChanges="keyboardHidden|orientation">
           <intent-filter>
               <action android:name="android.intent.action.CALL" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:scheme="tel" />
           </intent-filter>
           <intent-filter>
               <action android:name="android.intent.action.CALL" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:scheme="voicemail" />
           </intent-filter>
           <intent-filter>
               <action android:name="android.intent.action.CALL" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:mimeType="vnd.android.cursor.item/phone" />
               <data android:mimeType="vnd.android.cursor.item/phone_v2" />
               <data android:mimeType="vnd.android.cursor.item/person" />
           </intent-filter>
       </activity>
       <activity-alias android:theme="@android:style/Theme.NoDisplay" android:name="EmergencyOutgoingCallBroadcaster" android:permission="android.permission.CALL_PRIVILEGED" android:targetActivity="OutgoingCallBroadcaster">
           <intent-filter>
               <action android:name="android.intent.action.CALL_EMERGENCY" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:scheme="tel" />
           </intent-filter>
           <intent-filter>
               <action android:name="android.intent.action.CALL_EMERGENCY" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:scheme="voicemail" />
           </intent-filter>
           <intent-filter>
               <action android:name="android.intent.action.CALL_EMERGENCY" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:mimeType="vnd.android.cursor.item/phone" />
               <data android:mimeType="vnd.android.cursor.item/person" />
           </intent-filter>
       </activity-alias>
       <activity-alias android:theme="@android:style/Theme.NoDisplay" android:name="PrivilegedOutgoingCallBroadcaster" android:permission="android.permission.CALL_PRIVILEGED" android:targetActivity="OutgoingCallBroadcaster">
           <intent-filter>
               <action android:name="android.intent.action.CALL_PRIVILEGED" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:scheme="tel" />
           </intent-filter>
           <intent-filter>
               <action android:name="android.intent.action.CALL_PRIVILEGED" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:scheme="voicemail" />
           </intent-filter>
           <intent-filter>
               <action android:name="android.intent.action.CALL_PRIVILEGED" />
               <category android:name="android.intent.category.DEFAULT" />
               <data android:mimeType="vnd.android.cursor.item/phone" />
               <data android:mimeType="vnd.android.cursor.item/phone_v2" />
               <data android:mimeType="vnd.android.cursor.item/person" />
           </intent-filter>
       </activity-alias>
       <receiver android:name="ProcessOutgoingCallTest" android:enabled="false" android:exported="false">
           <intent-filter android:priority="1">
               <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
               <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
       </receiver>
       <activity android:theme="@android:style/Theme.NoTitleBar" android:label="@string/phoneIconLabel" android:name="InCallScreen" android:exported="false" android:excludeFromRecents="true" android:launchMode="singleInstance" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation" />
       <activity android:label="@string/phoneIconLabel" android:name="InCallScreenShowActivation" android:permission="android.permission.PERFORM_CDMA_PROVISIONING" android:excludeFromRecents="true">
           <intent-filter>
               <action android:name="com.android.phone.InCallScreen.SHOW_ACTIVATION" />
               <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
       </activity>
       <activity android:label="@string/settings_label" android:name="Settings">
           <intent-filter>
               <action android:name="android.intent.action.VIEW" />
               <action android:name="android.intent.action.MAIN" />
               <action android:name="android.settings.DATA_ROAMING_SETTINGS" />
           </intent-filter>
       </activity>
       <service android:name="NetworkQueryService" />
       <activity android:label="@string/networks" android:name="NetworkSetting" android:configChanges="keyboardHidden|orientation">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <action android:name="android.settings.NETWORK_OPERATOR_" />
           </intent-filter>
       </activity>
       <activity android:label="@string/gsm_umts_options" android:name="GsmUmtsOptions">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/cdma_options" android:name="CdmaOptions">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/gsm_umts_options" android:name="GsmUmtsCallOptions">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/cdma_options" android:name="CdmaCallOptions">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/labelCF" android:name="GsmUmtsCallForwardOptions" android:configChanges="keyboardHidden|orientation">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/labelGSMMore" android:name="GsmUmtsAdditionalCallOptions" android:configChanges="keyboardHidden|orientation">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/cell_broadcast_sms" android:name="CellBroadcastSms">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/fdn" android:name="FdnSetting">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="" android:name="EnableFdnScreen" />
       <activity android:label="@string/enable_pin" android:name="EnableIccPinScreen">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
           </intent-filter>
       </activity>
       <activity android:label="@string/change_pin" android:name="ChangeIccPinScreen">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
           </intent-filter>
       </activity>
       <activity android:label="@string/get_pin2" android:name="GetPin2Screen" android:windowSoftInputMode="stateVisible" />
       <activity android:name="EditFdnContactScreen" android:windowSoftInputMode="stateVisible" />
       <activity android:label="@string/delete_fdn_contact" android:name="DeleteFdnContactScreen" />
       <activity android:theme="@android:style/Theme.Dialog" android:label="@android:string/dialog_alert_title" android:name="DataRoamingReenable">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/throttle_data_usage" android:name="DataUsage">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/roaming" android:name="RoamingSetting">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
           </intent-filter>
       </activity>
       <activity android:label="@string/call_settings" android:name="CallFeaturesSetting" android:configChanges="keyboardHidden|orientation">
           <intent-filter>
               <action android:name="android.intent.action.VIEW" />
               <action android:name="android.intent.action.MAIN" />
               <action android:name="com.android.phone.CallFeaturesSetting.ADD_VOICEMAIL" />
               <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
       </activity>
       <activity android:label="@string/phoneIconLabel" android:name="EmergencyCallHandler" android:excludeFromRecents="true" android:launchMode="singleInstance" />
       <service android:name="BluetoothHeadsetService">
           <intent-filter>
               <action android:name="android.bluetooth.IBluetoothHeadset" />
           </intent-filter>
       </service>
       <receiver android:name="OtaStartupReceiver" android:exported="false">
           <intent-filter android:priority="100">
               <action android:name="android.intent.action.BOOT_COMPLETED" />
           </intent-filter>
       </receiver>
       <service android:name="EmergencyCallbackModeService" />
       <activity android:theme="@android:style/Theme.Translucent.NoTitleBar" android:label="@string/ecm_exit_dialog" android:name="EmergencyCallbackModeExitDialog" android:excludeFromRecents="true" android:launchMode="singleTop">
           <intent-filter>
               <action android:name="com.android.phone.action.ACTION_SHOW_ECM_EXIT_DIALOG" />
               <action android:name="android.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS" />
               <category android:name="android.intent.category.DEFAULT" />
           </intent-filter>
       </activity>
       <receiver android:name="com.android.phone.PhoneToggler" android:permission="com.android.phone.CHANGE_NETWORK_MODE">
           <intent-filter>
               <action android:name="com.android.internal.telephony.REQUEST_NETWORK_MODE" />
               <action android:name="com.android.internal.telephony.MODIFY_NETWORK_MODE" />
           </intent-filter>
       </receiver>
   </application>
   <permission android:label="@string/per_change_mobile_network" android:name="com.android.phone.CHANGE_NETWORK_MODE" android:protectionLevel="dangerous" android:permissionGroup="android.permission-group.COST_MONEY" android:description="@string/per_change_mobile_network_desc" />
</manifest>

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...