TestDialerActivity.java revision 4e4ed74f1c29ede44450f78354755bfabfb1fc4f
17cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnpackage com.android.server.telecom.testapps; 27c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 37c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Leeimport android.app.Activity; 4fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Leeimport android.content.ContentValues; 55310196deda80ace064a7d5bc672dbe1974906b9Yorke Leeimport android.content.Context; 67c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Leeimport android.content.Intent; 7562ad5e7577d13e0ac31c42ee6499543f4d1e684Yorke Leeimport android.net.Uri; 87c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Leeimport android.os.Bundle; 9fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Leeimport android.provider.CallLog.Calls; 10562ad5e7577d13e0ac31c42ee6499543f4d1e684Yorke Leeimport android.telecom.PhoneAccount; 115310196deda80ace064a7d5bc672dbe1974906b9Yorke Leeimport android.telecom.TelecomManager; 127c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Leeimport android.view.View; 137c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Leeimport android.view.View.OnClickListener; 147c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Leeimport android.widget.EditText; 15fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Leeimport android.widget.Toast; 167c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 17945a82ea92bf4fcc8b505738760650f9fb74960bIhab Awadimport com.android.server.telecom.testapps.R; 187c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 197c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Leepublic class TestDialerActivity extends Activity { 20b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee private static final int REQUEST_CODE_SET_DEFAULT_DIALER = 1; 21b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee 227c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee private EditText mNumberView; 237c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 247c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee @Override 257c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee protected void onCreate(Bundle savedInstanceState) { 267c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee super.onCreate(savedInstanceState); 277c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee setContentView(R.layout.testdialer_main); 287c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee findViewById(R.id.set_default_button).setOnClickListener(new OnClickListener() { 297c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee @Override 307c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee public void onClick(View v) { 317c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee setDefault(); 327c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee } 337c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee }); 345310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee 357c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee findViewById(R.id.place_call_button).setOnClickListener(new OnClickListener() { 367c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee @Override 377c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee public void onClick(View v) { 387c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee placeCall(); 397c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee } 407c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee }); 417c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 42fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee findViewById(R.id.test_voicemail_button).setOnClickListener(new OnClickListener() { 43fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee @Override 44fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee public void onClick(View v) { 45fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee testVoicemail(); 46fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee } 47fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee }); 48fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee 495310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee findViewById(R.id.cancel_missed_button).setOnClickListener(new OnClickListener() { 505310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee @Override 515310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee public void onClick(View v) { 525310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee cancelMissedCallNotification(); 535310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee } 545310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee }); 555310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee 567c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee mNumberView = (EditText) findViewById(R.id.number); 577c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee updateEditTextWithNumber(); 587c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee } 597c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 607c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee @Override 61b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee protected void onActivityResult(int requestCode, int resultCode, Intent data) { 62b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee if (requestCode == REQUEST_CODE_SET_DEFAULT_DIALER) { 63b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee if (resultCode == RESULT_OK) { 64b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee showToast("User accepted request to become default dialer"); 65b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee } else if (resultCode == RESULT_CANCELED) { 66b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee showToast("User declined request to become default dialer"); 67b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee } 68b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee } 69b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee } 70b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee 71b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee @Override 727c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee protected void onNewIntent(Intent intent) { 737c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee super.onNewIntent(intent); 747c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee updateEditTextWithNumber(); 757c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee } 767c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 777c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee private void updateEditTextWithNumber() { 787c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee Intent intent = getIntent(); 797c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee if (intent != null) { 807c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee mNumberView.setText(intent.getDataString()); 817c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee } 827c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee } 837c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 847c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee private void setDefault() { 85b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee final Intent intent = new Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER); 86b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee intent.putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, getPackageName()); 87b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_DIALER); 887c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee } 897c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee 907c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee private void placeCall() { 914e4ed74f1c29ede44450f78354755bfabfb1fc4fYorke Lee final TelecomManager telecomManager = 924e4ed74f1c29ede44450f78354755bfabfb1fc4fYorke Lee (TelecomManager) getSystemService(Context.TELECOM_SERVICE); 934e4ed74f1c29ede44450f78354755bfabfb1fc4fYorke Lee telecomManager.placeCall(Uri.fromParts(PhoneAccount.SCHEME_TEL, 944e4ed74f1c29ede44450f78354755bfabfb1fc4fYorke Lee mNumberView.getText().toString(), null), null); 957c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee } 96fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee 97fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee private void testVoicemail() { 98fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee try { 99fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee // Test read 100fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee getContentResolver().query(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null, null, null); 101fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee // Test write 102fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee final ContentValues values = new ContentValues(); 103fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee values.put(Calls.CACHED_NAME, "hello world"); 104fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee getContentResolver().update(Calls.CONTENT_URI_WITH_VOICEMAIL, values, "1=0", null); 105fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee } catch (SecurityException e) { 106b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee showToast("Permission check failed"); 107fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee return; 108fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee } 109b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee showToast("Permission check succeeded"); 110b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee } 111b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee 112b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee private void showToast(String message) { 113b5c5d44062ff3d992e0985424382e4596d386085Yorke Lee Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); 114fbc956311259d1cdd5978cb0b652d1561f06a33cYorke Lee } 1155310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee 1165310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee private void cancelMissedCallNotification() { 1175310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee try { 1185310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee final TelecomManager tm = (TelecomManager) getSystemService(Context.TELECOM_SERVICE); 1195310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee tm.cancelMissedCallsNotification(); 1205310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee } catch (SecurityException e) { 1215310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee Toast.makeText(this, "Privileged dialer operation failed", Toast.LENGTH_SHORT).show(); 1225310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee return; 1235310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee } 1245310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee Toast.makeText(this, "Privileged dialer operation succeeded", Toast.LENGTH_SHORT).show(); 1255310196deda80ace064a7d5bc672dbe1974906b9Yorke Lee } 1267c65acd2d2201fab6ea35f331baa1ea9bc04ee96Yorke Lee} 127