14d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa/* 24d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * Copyright (C) 2012 The Android Open Source Project 34d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * 44d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * Licensed under the Apache License, Version 2.0 (the "License"); 54d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * you may not use this file except in compliance with the License. 64d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * You may obtain a copy of the License at 74d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * 84d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * http://www.apache.org/licenses/LICENSE-2.0 94d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * 104d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * Unless required by applicable law or agreed to in writing, software 114d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * distributed under the License is distributed on an "AS IS" BASIS, 124d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * See the License for the specific language governing permissions and 144d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * limitations under the License. 154d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa */ 164d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa 174d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawapackage com.android.phone.tests; 184d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa 194d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawaimport android.app.IntentService; 204d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawaimport android.content.Intent; 214d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawaimport android.net.Uri; 224d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawaimport android.os.Handler; 234d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawaimport android.os.Message; 244d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawaimport android.util.Log; 254d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawaimport android.widget.Toast; 264d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa 274d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa/** 284d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * Service which receives instant text responses from in-call UI and shows the message using 294d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa * {@link Toast}. 304d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa */ 314d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawapublic class SendInstantTextTestService extends IntentService { 324d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa private static final String TAG = SendInstantTextTestService.class.getSimpleName(); 334d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa 344d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa private final Handler mHandler = new Handler() { 354d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa @Override 364d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa public void handleMessage(Message msg) { 374d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa showMessageWithToast((Intent) msg.obj); 384d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa } 394d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa }; 404d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa 414d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa public SendInstantTextTestService() { 424d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa super("send_instant_text_test_service"); 434d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa } 444d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa 454d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa @Override 464d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa protected void onHandleIntent(Intent intent) { 474d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa String action = intent.getAction(); 484d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa Uri uri = intent.getData(); 494d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa String message = intent.getStringExtra(Intent.EXTRA_TEXT); 504d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa Log.i(TAG, "Received instant response message. action=" + action 514d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa + ", uri=" + uri + ", message=\"" + message + "\""); 524d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa // Phone app uses Toast to show confirmation, which overlaps with this message. 534d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa // Let's delay showing this one for 5sec. 544d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa mHandler.sendMessageDelayed(Message.obtain(mHandler, 0, intent), 5 * 1000); 554d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa } 564d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa 574d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa private void showMessageWithToast(Intent intent) { 584d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa Uri uri = intent.getData(); 594d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa String message = intent.getStringExtra(Intent.EXTRA_TEXT); 604d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa String toastText = getString(R.string.instant_text_back_content, message, uri.toString()); 614d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa Toast.makeText(this, toastText, Toast.LENGTH_LONG).show(); 624d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa } 634d7d3fab65e210e50f551046bc2a94b06888954bDaisuke Miyakawa}