
Originariamente inviato da
elegos
OK allora tra mille peripezie sono arrivato a queste considerazioni:
startActivityForResult funziona e posso associarlo ad un onActivityResult "override", quindi soppiantando l'onActivityResult di default.
Il problema è il seguente: il programma fa a tutti gli effetti una chiamata, quindi non passa per l'onActivityResult!!!
Spiego meglio:
Log del programma:
codice:
Caricamento dati in corso...
*123%23
USSD: 1 0 null
Da notare che USSD: 1 0 null parte esattamente quando l'app dice "Esecuzione codice USSD...", quindi si presuppone che la chiamata "finisca", quindi parte un secondo processo che fa visualizzare il popup informativo, quindi infine arriva il secondo popup "Il credito e': x.xx Euro..."
QUINDI ora c'è da capire come sopprimere il popup informativo (un altro Override?), ma soprattutto capire come captare i dati in arrivo dell'USSD.
OPPURE cercare di capire, anziché android.intent.action.CALL, quale sia il comando per far partire direttamente la richiesta USSD.
Codice:
codice:
package com.elegos.windinforma;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;
public class WindInforma extends Activity {
/** Called when the activity is first created. */
private TextView view;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String encodedHash = Uri.encode("#");
this.view = (TextView) findViewById(R.id.main);
this.view.setText("Caricamento dati in corso...");
call("*123" + encodedHash);
}
protected void call(String phoneNumber) {
this.view.append("\n"+phoneNumber);
try {
startActivityForResult(new Intent("android.intent.action.CALL", Uri.parse("tel:" + phoneNumber)), 1);
} catch (Exception eExcept) { this.view.append("\n\n\n"+eExcept.toString()); }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
this.view.append("\nUSSD: " + requestCode + " " + resultCode + " " + data);
}
}