source: dispositivos_moviles/TibisayMovil/src/ve/gob/cenditel/tibisaymovil/TibisayMovilActivity.java @ 8243993

Last change on this file since 8243993 was 8243993, checked in by Jose Ruiz <joseruiz@…>, 11 years ago

funcionalidad de firma electronica pdf

  • Property mode set to 100644
File size: 10.5 KB
Line 
1package ve.gob.cenditel.tibisaymovil;
2
3import android.os.Build;
4import android.os.Bundle;
5import android.app.Activity;
6import android.app.AlertDialog;
7import android.content.Context;
8import android.content.DialogInterface;
9import android.content.Intent;
10import android.util.Log;
11import android.view.Menu;
12import android.view.View;
13import android.view.Window;
14import android.widget.AdapterView;
15import android.widget.AdapterView.OnItemClickListener;
16import android.widget.ArrayAdapter;
17import android.widget.ListView;
18import android.widget.TextView;
19import android.widget.Toast;
20
21//public class TibisayMovilActivity extends KeyChainClientActivity {
22//implements OnItemClickListener, OnClickListener {
23public class TibisayMovilActivity extends Activity {
24
25
26    public DirectKeyChain keyChain;
27   
28        @Override
29        protected void onCreate(Bundle savedInstanceState) {
30                super.onCreate(savedInstanceState);
31       
32                final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);         
33                setContentView(R.layout.activity_main);   
34                if(customTitleSupported)
35                        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar);
36       
37                // listview de funciones
38                final ListView listViewFunctions = (ListView) findViewById(R.id.listViewFunctions);
39               
40                String[] values = new String[] {getString(R.string.firmar), 
41                                                                                getString(R.string.verificar), 
42                                                                                getString(R.string.cifrar), 
43                                                                                getString(R.string.descifrar), 
44                                                                                getString(R.string.compartir), 
45                                                                                getString(R.string.certificados), 
46                                                                                getString(R.string.preferencias) };
47                       
48                       
49                FunctionListAdapter ad = new FunctionListAdapter(this, values);
50                listViewFunctions.setAdapter(ad);
51               
52               
53               
54               
55                /*************** Dialogos de submenus *******************/
56                //Crear dialogo de opciones para firmar
57                final AlertDialog sign_dialog = makeSignatureOptionsDialog();
58               
59                //Crear dialogo de opciones para compartir archivo
60                final AlertDialog share_dialog = makeShareOptionsDialog();
61                       
62                //Crear dialogo de opciones para compartir cifrar archivo
63                final AlertDialog certificate_dialog = makeCertificateOptionsDialog();
64
65               
66                listViewFunctions.setOnItemClickListener(new OnItemClickListener(){
67                       
68                        @Override
69                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
70                                        long arg3) {
71
72                                Context context = getApplicationContext();
73                                //CharSequence text = "Click!";
74                                int duration = Toast.LENGTH_SHORT;
75                                //Toast.makeText(context, text, duration).show();
76                               
77                                View curr = arg0.getChildAt((int) arg3);
78                                TextView c = (TextView)curr.findViewById(R.id.textListMainMenu);
79                                String function = c.getText().toString();
80                                //Toast.makeText(context, function, duration).show();
81
82                                // seleccion de firmar
83                                if(function.equals(getString(R.string.firmar))) {
84                                        sign_dialog.show();
85                                }
86                               
87                                // seleccion de verificar
88                                if(function.equals(getString(R.string.verificar))) {
89                                        Toast.makeText(context, "VERIFICAR", duration).show();
90                                        verifyBDOCSignedFile();
91                                }
92                               
93                                // seleccion de cifrar
94                                if(function.equals(getString(R.string.cifrar))) {
95                                        Toast.makeText(context, "CIFRAR", duration).show();
96                                        encryptFile();
97                                }
98                               
99                               
100                                // seleccion de gestionar certificados 
101                                if (function.equals("Certificados")){
102                                        Toast.makeText(context, "Gestionar repositorio", duration).show();
103                                       
104                                        certificate_dialog.show();
105                                        /*
106                                       
107                                        // Chequeo de version del API de Android para creacion de repositorio           
108                                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH){
109                                        //RelativeLayout certTab = (RelativeLayout) this.findViewById(R.id.linetab2);
110                                    //certTab.setVisibility(View.VISIBLE);           
111                                    //this.tabsListener.setKeyChainController(this.keyChainController);
112                                        Toast.makeText(context, "API < 4.0", duration).show();
113                                       
114                                }
115                                       
116                                        //manageKeyChain();
117                                       
118                                        // lanzar activity de gestion de repositorio
119                                        testRepository();
120                                       
121                                        */
122                                }
123                               
124                                // seleccion de compartir archivo
125                                if (function.equals(getString(R.string.compartir))){
126                                        Toast.makeText(context, "Compartir Archivo", duration).show();
127                                        share_dialog.show();
128                               
129                                }
130                                // seleccion de firmar
131                                if(function.equals(getString(R.string.preferencias))) {
132                                        preferences();
133                                }
134                               
135                        }
136                }); //setOnItemClickListener
137        } // end onCreate
138
139        @Override
140        public boolean onCreateOptionsMenu(Menu menu) {
141                // Inflate the menu; this adds items to the action bar if it is present.
142                getMenuInflater().inflate(R.menu.main, menu);
143                return true;
144        }
145
146        /*
147        @Override
148    public void setAlias(String alias) {
149
150        if (alias == null) {
151            finish();
152            return;
153        }
154       
155        this.privateKeyAlias = alias;
156       
157        //Intent intent = new Intent(this, CertValidatorActivity.class);
158        //intent.putExtra(IntentExtraField.ALIAS, alias);
159        //intent.putParcelableArrayListExtra(IntentExtraField.FILES, TypeUtils.convertToUriArrayList(this.selected));
160        //startActivityForResult(intent, ActivityResult.CHECK_CERTIFICATE_VALIDITY);       
161       
162    }
163        */
164
165//      private void manageKeyChain(){
166//              //
167//              //Intent intent = new Intent(this, PKCS12FilePickerActivity.class);
168//        //startActivityForResult(intent, ActivityResult.IMPORT_CERTIFICATE);
169//        //KeyChainStrategy.getInstance().choosePrivateKeyAlias();
170//      }
171       
172        private void testRepository(){
173
174//              this.keyChain = DirectKeyChain.getInstance();
175//              this.keyChain.setListView(this.viewHolder.aliases);
176//              this.keyChain.setMasterActivity((Activity) this);
177//              this.keyChain.choosePrivateKeyAlias();
178
179        Intent intent = new Intent(this, CertificateRepositoryActivity.class);
180                startActivity(intent);
181        }
182       
183        private void fileToSignHandwrittenSignature(){
184                Intent intent = new Intent(this, FileToSignHandwrittenSignatureActivity.class);
185                startActivity(intent);
186        }
187       
188        private void filesToPKCS7Sign(){
189                Intent intent = new Intent(this, FilesToPKCS7SignActivity.class);
190                startActivity(intent);
191        }
192       
193        private void filesToPDFSign(){
194                Intent intent = new Intent(this, FilesToPDFSignActivity.class);
195                startActivity(intent);
196        }
197
198       
199        // lanza activity para verificar un documento firmado
200        private void verifyBDOCSignedFile(){
201                //Intent intent = new Intent(this, FileToSignHandwrittenSignatureActivity.class);
202                Intent intent = new Intent(this, FileToVerifySignatureActivity.class);
203                startActivity(intent);
204        }
205       
206        // lanza activity para compartir un documento
207        private void shareFile(String path){
208                Intent intent = new Intent(this, FileToShareActivity.class);
209               
210                intent.putExtra("path", path);
211               
212                startActivity(intent);
213        }
214
215        // lanza activity para cifrar un documento
216        private void encryptFile(){
217                Intent intent = new Intent(this, FileToEncryptActivity.class);         
218                startActivity(intent);
219        }
220
221        // lanza la activity para gestionar los certificados de destinarios (cifrado)
222        private void manageRecipientCertificates() {
223                Intent intent = new Intent(this, EncryptionCertificatesActivity.class);         
224                startActivity(intent);
225        }
226       
227       
228        //Crea dialogo de opciones para firma electronica
229        public AlertDialog makeSignatureOptionsDialog() {
230                final String[] option = new String[] {getString(R.string.firmar_man_pdf), getString(R.string.firmar_elec_pdf), getString(R.string.firmar_pkcs7) };
231                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
232                        android.R.layout.select_dialog_item, option);
233                AlertDialog.Builder builder = new AlertDialog.Builder(this);
234               
235                builder.setTitle(getString(R.string.seleccione_opcion));
236                builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
237               
238                  public void onClick(DialogInterface dialog, int which) {
239                         
240                          switch (which) {
241                        case 0: // Firma Manuscrita PDF
242                                Log.i("DEBUG", "antes de activity call");
243                                fileToSignHandwrittenSignature();
244                                break;
245                        case 1: // Firma Electronica PDF
246                                filesToPDFSign();                                       
247                                break;
248                        case 2: // Firma PKCS7
249                                filesToPKCS7Sign();                             
250                                break;
251
252                        default:
253                                break;
254                        }
255                  }
256                 
257                });     
258               
259                return builder.create();
260        }
261
262       
263        // lanza activity para preferencias
264        private void preferences(){
265                Intent intent = new Intent(this, PreferencesActivity.class);
266                startActivity(intent);
267        }
268       
269        //Crea dialogo de opciones para compartir archivos
270        public AlertDialog makeShareOptionsDialog() {
271                final String[] option = new String[] {getString(R.string.share_pdf_signed), 
272                                getString(R.string.share_bdoc_downloaded), getString(R.string.share_extracted_file_from_bdoc), 
273                                getString(R.string.share_encrypted) };
274                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
275                        android.R.layout.select_dialog_item, option);
276                AlertDialog.Builder builder = new AlertDialog.Builder(this);
277               
278                builder.setTitle(getString(R.string.seleccione_opcion));
279                builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
280               
281                  public void onClick(DialogInterface dialog, int which) {
282                         
283                          switch (which) {
284                        case 0: // Archivo Firmado
285                                Log.i("DEBUG", "antes de activity call");
286                                shareFile("archivoFirmado");
287                                break;
288                        case 1: // Archivos BDOC Descargados
289                                shareFile("bdocDescargado");
290                                break;
291                        case 2: // Archivos extraídos de BDOC
292                                shareFile("extraidoDeBdoc");
293                                break;
294
295                        case 3: // Archivos cifrados
296                                shareFile("cifrado");
297                                break;
298                        default:
299                                break;
300                        }
301                  }
302                 
303                });     
304               
305                return builder.create();
306        }
307       
308        //Crea dialogo de opciones para gestionar certificados
309        public AlertDialog makeCertificateOptionsDialog() {
310;               
311                final String[] option;
312                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH){
313                        option = new String[] {getString(R.string.manage_personal_certificates), getString(R.string.manage_certificates_for_encryption) };
314                } else {
315                        option = new String[] {getString(R.string.manage_certificates_for_encryption) };
316                }
317               
318                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
319                        android.R.layout.select_dialog_item, option);
320                AlertDialog.Builder builder = new AlertDialog.Builder(this);
321               
322                builder.setTitle(getString(R.string.seleccione_opcion));
323                builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
324               
325                  public void onClick(DialogInterface dialog, int which) {
326                       
327                        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH){
328
329                                switch (which) {
330                                case 0: // Certificados personales
331                                        testRepository();
332                                        break;
333                                case 1: // Certificados para cifrado
334                                        manageRecipientCertificates();
335                                        break;
336                                }
337                               
338                        } else  {
339                               
340                                switch (which) {
341                                case 0: // Certificados para cifrado
342                                        manageRecipientCertificates();
343                                        break;
344                                }
345                               
346                        }
347                       
348                  }
349                 
350                });     
351               
352                return builder.create();
353        }
354       
355}
Note: See TracBrowser for help on using the repository browser.