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