Come salvare i popup di sistema (risposta USSD) sulle applicazioni Android come un messaggio di dialogo
USSD è una tecnologia di comunicazione che viene utilizzata per inviare testo tra un telefono cellulare e un programma applicativo (operatore di rete) nella rete.
I codici USSD sono utilizzati dagli utenti della rete per ottenere informazioni sull'utilizzo dall'operatore corrente. I codici USSD iniziano con *, preceduti da numeri e finiscono con #. Es: *123#
Come gestire/leggere/parsare i messaggi USSD dal popup.
Passi da implementare (aiutato da un caro amico)
1. Scrivere una classe chiamata "XXXX"
public class XXXX extends AccessibilityService {
public static String TAG = "XXXX";
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.d(TAG, "onAccessibilityEvent");
String text = event.getText().toString();
if (event.getClassName().equals("android.app.AlertDialog")) {
performGlobalAction(GLOBAL_ACTION_BACK);
Log.d(TAG, text);
Intent intent = new Intent("com.times.ussd.action.REFRESH");
intent.putExtra("message", text);
// write a broad cast receiver and call sendbroadcast() from here, if you want to parse the message for balance, date
}
}
@Override
public void onInterrupt() {
}
@Override
protected void onServiceConnected() {
super.onServiceConnected();
Log.d(TAG, "onServiceConnected");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.flags = AccessibilityServiceInfo.DEFAULT;
info.packageNames = new String[]{"com.android.phone"};
info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
setServiceInfo(info);
}
}
2. Add an entry for the above service in the manifest
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
android:resource="@xml/config_service" /> // created below
3. Create a folder 'xml' under res, and then create file named "config_service.xml" in xml folder.
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackSpoken"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"
android:description="Questo servizio registra i pop up inviati dal tuo operatore mobile, e li salva nella XXXX App. È assolutamente sicuro da usare". //dichiarare questo in string.xml
android:notificationTimeout="100"
android:packageNames="com.times.ussd"
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity" />
Per eseguire un servizio di accessibilità sono necessari i permessi dell'utente. L'xml di cui sopra è usato per fornire la descrizione necessaria all'utente.
4. Ora nella vostra attività, invocate questo
startService(new Intent(this, XXXX.class));
dailNumber("*111*2");
5. Lancia la tua applicazione.
6. Dopo il lancio, cambia le impostazioni manualmente
Impostazione->Impostazione accessibilità -> Puoi vedere un'opzione 'nome della tua app'. Attivatela. (Questo deve essere fatto come parte del flusso dell'applicazione (non manuale))
7. Riavvia la tua applicazione, e controlla i log, che ho scritto nella classe Service
Articoli simili
- Un tempo di risposta di 5ms è buono per i giochi, o dovrei sborsare qualche soldo in più per avere un tempo di risposta di 2ms?
- Qual è corretto: "A partire da ora, non ho ancora ricevuto una risposta" o "A partire da ora, non ho ancora ricevuto una risposta"?
- How to add a popup window over an Android native incoming call screen like the Truecaller Android app
- Perché Facebook non può aggiungere un messaggio di risposta automatica al suo messenger?