NotificationBuilderTest.java revision 561d3858bb9409b999a19f7ba93f0b12e1db835f
146439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato/*
246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * Copyright (C) 2010 The Android Open Source Project
346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato *
446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * Licensed under the Apache License, Version 2.0 (the "License");
546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * you may not use this file except in compliance with the License.
646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * You may obtain a copy of the License at
746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato *
846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato *      http://www.apache.org/licenses/LICENSE-2.0
946439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato *
1046439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * Unless required by applicable law or agreed to in writing, software
1146439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * distributed under the License is distributed on an "AS IS" BASIS,
1246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * See the License for the specific language governing permissions and
1446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato * limitations under the License.
1546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato */
1646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
1746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratopackage com.android.statusbartest;
1846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
1946439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.app.Notification;
2046439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.app.NotificationManager;
2146439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.app.PendingIntent;
2246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.content.Context;
2346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.content.ContentResolver;
2446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.content.Intent;
2546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.graphics.Bitmap;
2646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.graphics.drawable.BitmapDrawable;
2746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.net.Uri;
2846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.os.Environment;
2946439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.os.Vibrator;
3046439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.os.Handler;
3146439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.util.Log;
3246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.net.Uri;
3346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.os.SystemClock;
3446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.widget.RemoteViews;
3546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratoimport android.os.PowerManager;
3646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
3746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onoratopublic class NotificationBuilderTest extends TestActivity
3846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato{
3946439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    private final static String TAG = "NotificationTestList";
4046439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
4146439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    NotificationManager mNM;
4246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
4346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    @Override
4446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    protected String tag() {
4546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        return TAG;
4646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    }
4746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
4846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    @Override
4946439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    protected Test[] tests() {
5046439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
5146439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
5246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        return mTests;
5346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    }
5446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
5546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    private Test[] mTests = new Test[] {
5646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        new Test("Cancel (1)") {
5746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato            public void run() {
5846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato                mNM.cancel(1);
5946439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato            }
6046439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        },
6146439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
6246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        new Test("Basic Content (1)") {
6346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato            public void run() {
6446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato                int id = 1;
65561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                final Notification.Builder b = makeBasicBuilder(this, id);
6646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
67561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                mNM.notify(id, b.getNotification());
68561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato            }
69561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        },
70561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato
71561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        new Test("Content w/ Info (1)") {
72561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato            public void run() {
73561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                int id = 1;
74561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                final Notification.Builder b = makeBasicBuilder(this, id);
7546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
76561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                b.setContentInfo("Snoozed");
7746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
7846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato                mNM.notify(id, b.getNotification());
7946439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato            }
8046439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        },
818595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato
82561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        new Test("w/ Number (1)") {
833f76aa7755fbb2e77ca6a648bbfa1f75680788c9Joe Onorato            public void run() {
843f76aa7755fbb2e77ca6a648bbfa1f75680788c9Joe Onorato                int id = 1;
85561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                final Notification.Builder b = makeBasicBuilder(this, id);
863f76aa7755fbb2e77ca6a648bbfa1f75680788c9Joe Onorato
87561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                b.setNumber(12345);
883f76aa7755fbb2e77ca6a648bbfa1f75680788c9Joe Onorato
893f76aa7755fbb2e77ca6a648bbfa1f75680788c9Joe Onorato                mNM.notify(id, b.getNotification());
903f76aa7755fbb2e77ca6a648bbfa1f75680788c9Joe Onorato            }
913f76aa7755fbb2e77ca6a648bbfa1f75680788c9Joe Onorato        },
923f76aa7755fbb2e77ca6a648bbfa1f75680788c9Joe Onorato
93561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        new Test("w/ Number and Large Icon (1)") {
948595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato            public void run() {
958595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato                int id = 1;
96561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                final Notification.Builder b = makeBasicBuilder(this, id);
978595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato
98561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                b.setNumber(42);
998595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato
100561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                final BitmapDrawable bd = (BitmapDrawable)getResources().getDrawable(
101561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                        R.drawable.pineapple);
102561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato                b.setLargeIcon(Bitmap.createBitmap(bd.getBitmap()));
1038595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato
1048595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato                mNM.notify(id, b.getNotification());
1058595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato            }
1068595a3dd9a6feff70f8ddbad924d79b591d611e4Joe Onorato        },
10746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    };
10846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
109561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato    private Notification.Builder makeBasicBuilder(Test t, int id) {
110561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        final Notification.Builder b = new Notification.Builder(this);
111561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato
112561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        b.setWhen(System.currentTimeMillis());
113561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        b.setSmallIcon(R.drawable.ic_statusbar_chat);
114561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        b.setContentTitle("Notification builder Test");
115561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        b.setContentText(t.name + "\nhappy notifying");
116561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        b.setContentIntent(makeContentIntent(id));
117561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        b.setDeleteIntent(makeDeleteIntent(id));
118561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato
119561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato        return b;
120561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato    }
121561d3858bb9409b999a19f7ba93f0b12e1db835fJoe Onorato
12246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    private PendingIntent makeContentIntent(int id) {
12346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        Intent intent = new Intent(this, ConfirmationActivity.class);
12446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        intent.setData(Uri.fromParts("content", "//status_bar_test/content/" + id, null));
12546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        intent.putExtra(ConfirmationActivity.EXTRA_TITLE, "Content intent");
12646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        intent.putExtra(ConfirmationActivity.EXTRA_TEXT, "id: " + id);
12746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        return PendingIntent.getActivity(this, 0, intent, 0);
12846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    }
12946439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
13046439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    private PendingIntent makeDeleteIntent(int id) {
13146439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        Intent intent = new Intent(this, ConfirmationActivity.class);
13246439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        intent.setData(Uri.fromParts("content", "//status_bar_test/delete/" + id, null));
13346439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        intent.putExtra(ConfirmationActivity.EXTRA_TITLE, "Delete intent");
13446439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        intent.putExtra(ConfirmationActivity.EXTRA_TEXT, "id: " + id);
13546439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato        return PendingIntent.getActivity(this, 0, intent, 0);
13646439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato    }
13746439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato}
13846439cec0eb0da4d0f853f2d8712d0c00c98475bJoe Onorato
139