• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.server.telecom.testapps;
2 
3 import android.app.Activity;
4 import android.content.ContentValues;
5 import android.content.Context;
6 import android.content.Intent;
7 import android.net.Uri;
8 import android.os.Bundle;
9 import android.provider.CallLog.Calls;
10 import android.telecom.PhoneAccount;
11 import android.telecom.TelecomManager;
12 import android.util.Log;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.CheckBox;
16 import android.widget.EditText;
17 import android.widget.Toast;
18 
19 public class TestDialerActivity extends Activity {
20     private static final int REQUEST_CODE_SET_DEFAULT_DIALER = 1;
21 
22     private EditText mNumberView;
23     private CheckBox mRttCheckbox;
24 
25     @Override
onCreate(Bundle savedInstanceState)26     protected void onCreate(Bundle savedInstanceState) {
27         super.onCreate(savedInstanceState);
28         setContentView(R.layout.testdialer_main);
29         findViewById(R.id.set_default_button).setOnClickListener(new OnClickListener() {
30             @Override
31             public void onClick(View v) {
32                 setDefault();
33             }
34         });
35 
36         findViewById(R.id.place_call_button).setOnClickListener(new OnClickListener() {
37             @Override
38             public void onClick(View v) {
39                 placeCall();
40             }
41         });
42 
43         findViewById(R.id.test_voicemail_button).setOnClickListener(new OnClickListener() {
44             @Override
45             public void onClick(View v) {
46                 testVoicemail();
47             }
48         });
49 
50         findViewById(R.id.cancel_missed_button).setOnClickListener(new OnClickListener() {
51             @Override
52             public void onClick(View v) {
53                 cancelMissedCallNotification();
54             }
55         });
56 
57         mNumberView = (EditText) findViewById(R.id.number);
58         mRttCheckbox = (CheckBox) findViewById(R.id.call_with_rtt_checkbox);
59         updateMutableUi();
60     }
61 
62     @Override
onActivityResult(int requestCode, int resultCode, Intent data)63     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
64         if (requestCode == REQUEST_CODE_SET_DEFAULT_DIALER) {
65             if (resultCode == RESULT_OK) {
66                 showToast("User accepted request to become default dialer");
67             } else if (resultCode == RESULT_CANCELED) {
68                 showToast("User declined request to become default dialer");
69             }
70         }
71     }
72 
73     @Override
onNewIntent(Intent intent)74     protected void onNewIntent(Intent intent) {
75         super.onNewIntent(intent);
76         updateMutableUi();
77     }
78 
updateMutableUi()79     private void updateMutableUi() {
80         Intent intent = getIntent();
81         if (intent != null) {
82             mNumberView.setText(intent.getDataString());
83             mRttCheckbox.setChecked(
84                     intent.getBooleanExtra(TelecomManager.EXTRA_START_CALL_WITH_RTT, false));
85         }
86     }
87 
setDefault()88     private void setDefault() {
89         final Intent intent = new Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER);
90         intent.putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, getPackageName());
91         startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_DIALER);
92     }
93 
placeCall()94     private void placeCall() {
95         final TelecomManager telecomManager =
96                 (TelecomManager) getSystemService(Context.TELECOM_SERVICE);
97         telecomManager.placeCall(Uri.fromParts(PhoneAccount.SCHEME_TEL,
98                 mNumberView.getText().toString(), null), createCallIntentExtras());
99     }
100 
testVoicemail()101     private void testVoicemail() {
102         try {
103             // Test read
104             getContentResolver().query(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null, null, null);
105             // Test write
106             final ContentValues values = new ContentValues();
107             values.put(Calls.CACHED_NAME, "hello world");
108             getContentResolver().update(Calls.CONTENT_URI_WITH_VOICEMAIL, values, "1=0", null);
109         } catch (SecurityException e) {
110             showToast("Permission check failed");
111             return;
112         }
113         showToast("Permission check succeeded");
114     }
115 
showToast(String message)116     private void showToast(String message) {
117         Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
118     }
119 
cancelMissedCallNotification()120     private void cancelMissedCallNotification() {
121         try {
122             final TelecomManager tm = (TelecomManager) getSystemService(Context.TELECOM_SERVICE);
123             tm.cancelMissedCallsNotification();
124         } catch (SecurityException e) {
125             Toast.makeText(this, "Privileged dialer operation failed", Toast.LENGTH_SHORT).show();
126             return;
127         }
128         Toast.makeText(this, "Privileged dialer operation succeeded", Toast.LENGTH_SHORT).show();
129     }
130 
createCallIntentExtras()131     private Bundle createCallIntentExtras() {
132         Bundle extras = new Bundle();
133         extras.putString("com.android.server.telecom.testapps.CALL_EXTRAS", "Hall was here");
134         if (mRttCheckbox.isChecked()) {
135             extras.putBoolean(TelecomManager.EXTRA_START_CALL_WITH_RTT, true);
136         }
137 
138         Bundle intentExtras = new Bundle();
139         intentExtras.putBundle(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras);
140         Log.i("Santos xtr", intentExtras.toString());
141         return intentExtras;
142     }
143 }
144