1package com.android.server.telecom.testapps; 2 3import android.app.Activity; 4import android.content.Context; 5import android.os.Bundle; 6import android.os.Handler; 7import android.os.Looper; 8import android.util.Log; 9import android.telephony.TelephonyManager; 10import android.view.View; 11import android.view.View.OnClickListener; 12import android.widget.EditText; 13import android.widget.Toast; 14 15public class TestUssdActivity extends Activity { 16 17 private EditText mUssdNumberView; 18 private Context mContext; 19 public static final String LOG_TAG = "TestUssdActivity"; 20 21 private TelephonyManager.UssdResponseCallback mReceiveUssdResponseCallback = 22 new TelephonyManager.UssdResponseCallback () { 23 @Override 24 public void onReceiveUssdResponse(final TelephonyManager telephonyManager, 25 String request, CharSequence response) { 26 Log.i(LOG_TAG, "USSD Success: " + request + "," + response); 27 showToast("USSD Response Successly received for code:" + request + "," + 28 response); 29 } 30 31 public void onReceiveUssdResponseFailed(final TelephonyManager telephonyManager, 32 String request, int failureCode) { 33 Log.i(LOG_TAG, "USSD Fail: " + request + "," + failureCode); 34 showToast("USSD Response failed for code:" + request + "," + failureCode); 35 } 36 }; 37 38 @Override 39 protected void onCreate(Bundle savedInstanceState) { 40 super.onCreate(savedInstanceState); 41 mContext = getApplicationContext(); 42 43 setContentView(R.layout.testussd_main); 44 findViewById(R.id.place_ussd_button).setOnClickListener(new OnClickListener() { 45 @Override 46 public void onClick(View v) { 47 48 placeUssdRequest(); 49 } 50 }); 51 findViewById(R.id.place_many_ussd_button).setOnClickListener((v) -> { 52 placeUssdRequestMultiple(); 53 } 54 ); 55 56 mUssdNumberView = (EditText) findViewById(R.id.number); 57 } 58 59 private void placeUssdRequest() { 60 String mUssdNumber = mUssdNumberView.getText().toString(); 61 if (mUssdNumber.equals("") || mUssdNumber == null) { 62 mUssdNumber = "#932#"; 63 } 64 final TelephonyManager telephonyManager = 65 (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 66 try { 67 Handler h = new Handler(Looper.getMainLooper()); 68 Log.i(LOG_TAG, "placeUssdRequest: " + mUssdNumber); 69 telephonyManager.sendUssdRequest(mUssdNumber, mReceiveUssdResponseCallback, h); 70 } catch (SecurityException e) { 71 showToast("Permission check failed"); 72 return; 73 } 74 } 75 76 private void placeUssdRequestMultiple() { 77 for (int ix = 0; ix < 4 ; ix++) { 78 placeUssdRequest(); 79 } 80 } 81 82 private void showToast(String message) { 83 Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show(); 84 } 85}