• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2009 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.certinstaller;
18 
19 import android.content.Intent;
20 import android.os.Bundle;
21 import android.security.Credentials;
22 import android.widget.Toast;
23 
24 import java.io.File;
25 import java.util.List;
26 
27 /**
28  * The main class for installing certificates to the system keystore. It reacts
29  * to the public {@link Credentials#INSTALL_ACTION} intent.
30  */
31 public class CertInstallerMain extends CertFile implements Runnable {
32     @Override
onCreate(Bundle savedInstanceState)33     protected void onCreate(Bundle savedInstanceState) {
34         super.onCreate(savedInstanceState);
35         if (savedInstanceState != null) return;
36 
37         new Thread(new Runnable() {
38             public void run() {
39                 // don't want to call startActivityForResult() (invoked in
40                 // installFromFile()) here as it makes the new activity (thus
41                 // the whole display) get stuck for about 5 seconds
42                 runOnUiThread(CertInstallerMain.this);
43             }
44         }).start();
45     }
46 
run()47     public void run() {
48         Intent intent = getIntent();
49         String action = (intent == null) ? null : intent.getAction();
50 
51         if (Credentials.INSTALL_ACTION.equals(action)) {
52             Bundle bundle = intent.getExtras();
53 
54             if ((bundle == null) || bundle.isEmpty()) {
55                 if (!isSdCardPresent()) {
56                     Toast.makeText(this, R.string.sdcard_not_present,
57                             Toast.LENGTH_SHORT).show();
58                 } else {
59                     List<File> allFiles = getAllCertFiles();
60                     if (allFiles.isEmpty()) {
61                         Toast.makeText(this, R.string.no_cert_file_found,
62                                 Toast.LENGTH_SHORT).show();
63                     } else if (allFiles.size() == 1) {
64                         installFromFile(allFiles.get(0));
65                         return;
66                     } else {
67                         startActivity(new Intent(this, CertFileList.class));
68                     }
69                 }
70             } else {
71                 Intent newIntent = new Intent(this, CertInstaller.class);
72                 newIntent.putExtras(intent);
73                 startActivity(newIntent);
74             }
75         }
76         finish();
77     }
78 
79     @Override
onInstallationDone(boolean success)80     protected void onInstallationDone(boolean success) {
81         finish();
82     }
83 
84     @Override
onError(int errorId)85     protected void onError(int errorId) {
86         finish();
87     }
88 }
89