Empêcher la boîte de dialogue USSD et lire la réponse USSD?

j'ai fait beaucoup de recherche sur ussd, mais je ne peux pas lire USSD respone et comment puis-je empêcher ussd boîte de dialogue semblable à cette application.

https://play.google.com/store/apps/details?id=com.iba.ussdchecker&hl=fr

- je installer ce https://github.com/alaasalman/ussdinterceptor redémarrer mon téléphone (S2 android 4.0.3), envoyer ussd code mais rien ne se passe, quelqu'un me dire que je dois lire le journal, mais comment puis-je le faire.

que j'essaie ces code pour lire USSD de journal

USSD.java

    package com.example.ussd;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Calendar;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import android.util.Log;
public class USSD {
private static String startmsg = "displayMMIComplete"; //start msg to look
//for
private static String endmsg = "MMI code has finished running"; //stop msg
private static String trimmsg = "- using text from MMI message: '"; //a msg
//to
//remove
//from
//the
//text
private long before = 3000; //delay (ms) before creation of the class
//before a msg (USDD) is valid (use timestamp)
private long after = 3000; //delay (ms) after creation of the class that a
//msg (USDD) is valid (wait after ms)
private String msg = ""; //the USSD message
private boolean found = false;
private long t = -1; //timestamp of the found log
public USSD() {
this(3000, 3000);
}
//USSD in log : example
public USSD(long before_creation, long after_creation) {
before = before_creation;
after = after_creation;
long timestamp = System.currentTimeMillis(); //creation of the class
//--> look for the USSD
//msg in the logs
Log.d("USSDClass",
"Class creation - timestamp: " + String.valueOf(timestamp));
try {
//sample code taken from alogcat ...
Process logcatProc = Runtime.getRuntime().exec(
"logcat -v time -b main PhoneUtils:D"); //get PhoneUtils
//debug log with
//time information
BufferedReader mReader = new BufferedReader(new InputStreamReader(
logcatProc.getInputStream()), 1024);
String line = "";
boolean tostop = false;
long stop = timestamp + after; //to stop the while after "after" ms
while (((line = mReader.readLine()) != null)
&& (System.currentTimeMillis() < stop) && (tostop == false)) {
if (line.length() > 19) //the line should be at least with a
//length of a timestamp (19) !
{
if (line.contains(startmsg)) //check if it is a USSD msg
{
//log example :
//"12-10 20:36:39.321 D/PhoneUtils(  178): displayMMIComplete: state=COMPLETE"
t = extracttimestamp(line); //extract the timestamp of
//thie msg
Log.d("USSDClass", "Found line at timestamp : "
+ String.valueOf(t));
if (t >= timestamp - before)
found = true; //start of an USDD is found & is
//recent !
} else if (found) {
//log example :
//"12-10 20:36:39.321 D/PhoneUtils(  178): displayMMIComplete: state=COMPLETE"
if (line.contains(endmsg))
tostop = true;
else {
//log example :
//"12-10 20:36:39.321 D/PhoneUtils(  178): - using text from MMI message: 'Your USSD message with one or several lines"
Log.d("USSDClass", "Line content : " + line);
String[] v = line.split("\\): "); //doesn't need
//log
//information
//--> split
//with "): "
//separator
if (v.length > 1)
msg += v[1].replace(trimmsg, "").trim() + "\n";
}
}
}
}
} catch (IOException e) {
Log.d("USSDClass", "Exception:" + e.toString());
}
}
public boolean IsFound() {
return found;
}
public String getMsg() {
return msg;
}
//extract timestamp from a log line with format
//"MM-dd HH:mm:ss.ms Level/App:msg" Example : 12-10 20:36:39.321
//Note : known bug : happy new year check will not work !!!
private long extracttimestamp(String line) {
long timestamp = -1; //default value if no timestamp is found
String[] v = line.split(" ");
if (v.length > 1) //check if there is space
{
Calendar C = Calendar.getInstance();
int y = C.get(Calendar.YEAR);
String txt = v[0] + "-" + y + " " + v[1]; //transform in format
//"MM-dd-yyyy HH:mm:ss"
SimpleDateFormat formatter = new SimpleDateFormat(
"MM-dd-yyyy HH:mm:ss");
try {
Date tmp = formatter.parse(txt);
timestamp = tmp.getTime();
String[] ms = v[1].split("."); //get ms
if (ms.length > 1)
timestamp += Integer.getInteger(ms[1]);
} catch (ParseException e) {
Log.d("USSDClass",
"USDD.extractimestamp exception:" + e.toString());
}
}
return timestamp;
}
}

UssdActivity.java

package com.example.ussd;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;
public class UssdActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private TextView view;
private AutoCompleteTextView number;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
this.view = (TextView) findViewById(R.id.Text2);
this.number = (AutoCompleteTextView) findViewById(R.id.Text1);
}
@Override
public void onClick(View arg0) {
String encodedHash = Uri.encode("#");
call("*" + number.getText() + encodedHash);
this.view.setText("");
}
protected void call(String 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) {
USSD ussd = new USSD(4000, 4000);
if (ussd.IsFound())
this.view.append("\n test" + ussd.getMsg());
else
this.view.append("" + R.string.error_ussd_msg);
}
}

et la sortie est à quelque chose comme ceci:

com.sec.android.app.callsetting.allcalls:com.sec.android.callsetting.allcalls.AllCallsProvider Terminated ALSA PLAYBACK device hifi

source d'informationauteur Jack | 2014-02-27