158a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor/*
258a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * Copyright (C) 2011 The Android Open Source Project
358a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor *
458a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * Licensed under the Apache License, Version 2.0 (the "License");
558a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * you may not use this file except in compliance with the License.
658a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * You may obtain a copy of the License at
758a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor *
858a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor *      http://www.apache.org/licenses/LICENSE-2.0
958a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor *
1058a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * Unless required by applicable law or agreed to in writing, software
1158a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * distributed under the License is distributed on an "AS IS" BASIS,
1258a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1358a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * See the License for the specific language governing permissions and
1458a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor * limitations under the License.
1558a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor */
1658a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
1758a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorpackage com.android.basicsmsreceiver;
1858a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
1958a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.app.Activity;
2058a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.app.AlertDialog;
2158a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.app.Dialog;
2258a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.app.NotificationManager;
2358a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.content.Context;
2458a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.content.DialogInterface;
2558a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.content.Intent;
2658a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.os.Bundle;
2758a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorimport android.util.Log;
2858a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
2958a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylorpublic class DialogSmsDisplay extends Activity {
3058a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    private static final String LOG_TAG = "SmsReceivedDialog";
3158a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
3258a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    private static final int DIALOG_SHOW_MESSAGE = 1;
3358a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
3458a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    public static final String SMS_FROM_ADDRESS_EXTRA =
3558a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor                                                "com.android.basicsmsreceiver.SMS_FROM_ADDRESS";
3658a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    public static final String SMS_MESSAGE_EXTRA =
3758a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor                                                "com.android.basicsmsreceiver.SMS_MESSAGE";
3858a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    public static final String SMS_NOTIFICATION_ID_EXTRA =
3958a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor                                                "com.android.basicsmsreceiver.NOTIFICATION_ID";
4058a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
4112de25a6f806848952d8c334a90c5884aba4690fTom Taylor    // Visible to unit tests
4212de25a6f806848952d8c334a90c5884aba4690fTom Taylor    String mFromAddress;
4312de25a6f806848952d8c334a90c5884aba4690fTom Taylor    String mMessage;
4458a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
4558a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    @Override
4658a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    protected void onCreate(Bundle savedInstanceState) {
4758a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        super.onCreate(savedInstanceState);
4858a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
49db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor        parseIntent(getIntent());
50db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor    }
51db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor
52db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor    private void parseIntent(Intent intent) {
5312de25a6f806848952d8c334a90c5884aba4690fTom Taylor        if (intent == null) {
5412de25a6f806848952d8c334a90c5884aba4690fTom Taylor            return;
5512de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
56db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor        Bundle extras = intent.getExtras();
5712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        if (extras == null) {
5812de25a6f806848952d8c334a90c5884aba4690fTom Taylor            return;
5912de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
6058a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        mFromAddress = extras.getString(SMS_FROM_ADDRESS_EXTRA);
6158a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        mMessage = extras.getString(SMS_MESSAGE_EXTRA);
6258a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        int notificationId = extras.getInt(SMS_NOTIFICATION_ID_EXTRA);
6358a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
6458a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        Log.i(LOG_TAG, "notificationId: " + notificationId);
6558a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
6658a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        // Dismiss the notification that brought us here.
6758a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        NotificationManager notificationManager =
6858a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor            (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
6958a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        notificationManager.cancel(notificationId);
7058a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
7158a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        showDialog(DIALOG_SHOW_MESSAGE);
7258a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    }
7358a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor
7458a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    @Override
75db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor    protected void onNewIntent(Intent intent) {
76db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor        removeDialog(DIALOG_SHOW_MESSAGE);
77db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor
78db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor        parseIntent(intent);
79db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor    }
80db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor
81db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor    @Override
8258a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    protected Dialog onCreateDialog(int id) {
8358a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        switch (id) {
84db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor            case DIALOG_SHOW_MESSAGE:
85db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                return new AlertDialog.Builder(this)
86db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                        .setTitle(String.format(getString(R.string.sms_message_from_format),
87db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                                mFromAddress))
88db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                        .setMessage(mMessage)
89db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                        .setCancelable(true)
90db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                        .setOnCancelListener(new AlertDialog.OnCancelListener() {
91db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                            public void onCancel(DialogInterface dialog) {
92db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                                dialog.dismiss();
93db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                                finish();
94db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                            }
95db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                        })
96db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                        .setNeutralButton(R.string.sms_done_button,
97db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                                new DialogInterface.OnClickListener() {
98db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                            public void onClick(DialogInterface dialog, int whichButton) {
99db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                                dialog.dismiss();
100db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                                finish();
101db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                            }
102db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                        })
103db6fea8cc6f41f737b74378cf805a39204a1ed09Tom Taylor                        .create();
10458a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        }
10558a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor        return null;
10658a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor    }
10758a104a69871bd7e93afd768ceca5df1eac32ff9Tom Taylor}
108