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}