1aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu/*
2aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * Copyright (C) 2014 The Android Open Source Project
3aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu *
4aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * Licensed under the Apache License, Version 2.0 (the "License");
5aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * you may not use this file except in compliance with the License.
6aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * You may obtain a copy of the License at
7aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu *
8aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu *      http://www.apache.org/licenses/LICENSE-2.0
9aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu *
10aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * Unless required by applicable law or agreed to in writing, software
11aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * distributed under the License is distributed on an "AS IS" BASIS,
12aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * See the License for the specific language governing permissions and
14aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * limitations under the License.
15aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu */
16aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
17aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wupackage com.android.stk;
18aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
19aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport android.app.Activity;
20aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport android.content.Context;
21aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport android.content.Intent;
22aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport android.os.Bundle;
23aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport android.view.View;
24aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
25aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport com.android.internal.telephony.cat.CatLog;
26aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport com.android.internal.telephony.PhoneConstants;
27aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
28aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport android.telephony.TelephonyManager;
29aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
30aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport android.view.Gravity;
31aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wuimport android.widget.Toast;
32aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
33aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu/**
34aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * Launcher class. Serve as the app's MAIN activity, send an intent to the
35aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu * StkAppService and finish.
36aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu *
37aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu */
38aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu public class StkMain extends Activity {
39aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private static final String className = new Object(){}.getClass().getEnclosingClass().getName();
40aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private static final String LOG_TAG = className.substring(className.lastIndexOf('.') + 1);
41aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private int mSingleSimId = -1;
42aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private Context mContext = null;
43aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private TelephonyManager mTm = null;
44aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private static final String PACKAGE_NAME = "com.android.stk";
45aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private static final String STK_LAUNCHER_ACTIVITY_NAME = PACKAGE_NAME + ".StkLauncherActivity";
46aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
47aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    @Override
48aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    public void onCreate(Bundle icicle) {
49aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        super.onCreate(icicle);
50aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        CatLog.d(LOG_TAG, "onCreate+");
51aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        mContext = getBaseContext();
52aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        mTm = (TelephonyManager) mContext.getSystemService(
53aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                Context.TELEPHONY_SERVICE);
54aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        //Check if needs to show the meun list.
55aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        if (isShowSTKListMenu()) {
56aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            Intent newIntent = new Intent(Intent.ACTION_VIEW);
57aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            newIntent.setClassName(PACKAGE_NAME, STK_LAUNCHER_ACTIVITY_NAME);
58aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            startActivity(newIntent);
59aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        } else {
60aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            //launch stk menu activity for the SIM.
61aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            if (mSingleSimId < 0) {
62aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                showTextToast(mContext, R.string.no_sim_card_inserted);
63aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            } else {
64aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                launchSTKMainMenu(mSingleSimId);
65aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            }
66aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        }
67aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        finish();
68aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    }
69aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
70aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private boolean isShowSTKListMenu() {
71aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        int simCount = TelephonyManager.from(mContext).getSimCount();
72aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        int simInsertedCount = 0;
73aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        int insertedSlotId = -1;
74aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
75aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        CatLog.d(LOG_TAG, "simCount: " + simCount);
76aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        for (int i = 0; i < simCount; i++) {
77aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            //Check if the card is inserted.
78aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            if (mTm.hasIccCard(i)) {
79aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                CatLog.d(LOG_TAG, "SIM " + i + " is inserted.");
80aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                mSingleSimId = i;
81aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                simInsertedCount++;
82aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            } else {
83aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                CatLog.d(LOG_TAG, "SIM " + i + " is not inserted.");
84aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            }
85aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        }
86aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        if (simInsertedCount > 1) {
87aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            return true;
88aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        } else {
89aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            //No card or only one card.
90aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            CatLog.d(LOG_TAG, "do not show stk list menu.");
91aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu            return false;
92aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        }
93aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    }
94aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
95aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private void launchSTKMainMenu(int slotId) {
96aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        Bundle args = new Bundle();
97aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        CatLog.d(LOG_TAG, "launchSTKMainMenu.");
98aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        args.putInt(StkAppService.OPCODE, StkAppService.OP_LAUNCH_APP);
99aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        args.putInt(StkAppService.SLOT_ID
100aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                , PhoneConstants.SIM_ID_1 + slotId);
101aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        startService(new Intent(this, StkAppService.class)
102aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu                .putExtras(args));
103aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    }
104aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu
105aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    private void showTextToast(Context context, int resId) {
106aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        Toast toast = Toast.makeText(context, resId, Toast.LENGTH_LONG);
107aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        toast.setGravity(Gravity.BOTTOM, 0, 0);
108aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu        toast.show();
109aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu    }
110aeefef5980a88d0dff10f4c81300789dca4aa1a5Legler Wu}
111