package ve.gob.cenditel.tibisaymovil; import android.os.Build; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; //public class TibisayMovilActivity extends KeyChainClientActivity { //implements OnItemClickListener, OnClickListener { public class TibisayMovilActivity extends Activity { public DirectKeyChain keyChain; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.activity_main); if(customTitleSupported) getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); // listview de funciones final ListView listViewFunctions = (ListView) findViewById(R.id.listViewFunctions); String[] values = new String[] {getString(R.string.firmar), getString(R.string.verificar), getString(R.string.cifrar), getString(R.string.descifrar), getString(R.string.compartir), getString(R.string.certificados), getString(R.string.preferencias) }; FunctionListAdapter ad = new FunctionListAdapter(this, values); listViewFunctions.setAdapter(ad); /*************** Dialogos de submenus *******************/ //Crear dialogo de opciones para firmar final AlertDialog sign_dialog = makeSignatureOptionsDialog(); //Crear dialogo de opciones para compartir archivo final AlertDialog share_dialog = makeShareOptionsDialog(); //Crear dialogo de opciones para compartir cifrar archivo final AlertDialog certificate_dialog = makeCertificateOptionsDialog(); listViewFunctions.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { Context context = getApplicationContext(); //CharSequence text = "Click!"; int duration = Toast.LENGTH_SHORT; //Toast.makeText(context, text, duration).show(); View curr = arg0.getChildAt((int) arg3); TextView c = (TextView)curr.findViewById(R.id.textListMainMenu); String function = c.getText().toString(); //Toast.makeText(context, function, duration).show(); // seleccion de firmar if(function.equals(getString(R.string.firmar))) { sign_dialog.show(); } // seleccion de verificar if(function.equals(getString(R.string.verificar))) { Toast.makeText(context, "VERIFICAR", duration).show(); verifyBDOCSignedFile(); } // seleccion de cifrar if(function.equals(getString(R.string.cifrar))) { Toast.makeText(context, "CIFRAR", duration).show(); encryptFile(); } // seleccion de gestionar certificados if (function.equals("Certificados")){ Toast.makeText(context, "Gestionar repositorio", duration).show(); certificate_dialog.show(); /* // Chequeo de version del API de Android para creacion de repositorio if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH){ //RelativeLayout certTab = (RelativeLayout) this.findViewById(R.id.linetab2); //certTab.setVisibility(View.VISIBLE); //this.tabsListener.setKeyChainController(this.keyChainController); Toast.makeText(context, "API < 4.0", duration).show(); } //manageKeyChain(); // lanzar activity de gestion de repositorio testRepository(); */ } // seleccion de compartir archivo if (function.equals(getString(R.string.compartir))){ Toast.makeText(context, "Compartir Archivo", duration).show(); share_dialog.show(); } // seleccion de firmar if(function.equals(getString(R.string.preferencias))) { preferences(); } } }); //setOnItemClickListener } // end onCreate @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } /* @Override public void setAlias(String alias) { if (alias == null) { finish(); return; } this.privateKeyAlias = alias; //Intent intent = new Intent(this, CertValidatorActivity.class); //intent.putExtra(IntentExtraField.ALIAS, alias); //intent.putParcelableArrayListExtra(IntentExtraField.FILES, TypeUtils.convertToUriArrayList(this.selected)); //startActivityForResult(intent, ActivityResult.CHECK_CERTIFICATE_VALIDITY); } */ // private void manageKeyChain(){ // // // //Intent intent = new Intent(this, PKCS12FilePickerActivity.class); // //startActivityForResult(intent, ActivityResult.IMPORT_CERTIFICATE); // //KeyChainStrategy.getInstance().choosePrivateKeyAlias(); // } private void testRepository(){ // this.keyChain = DirectKeyChain.getInstance(); // this.keyChain.setListView(this.viewHolder.aliases); // this.keyChain.setMasterActivity((Activity) this); // this.keyChain.choosePrivateKeyAlias(); Intent intent = new Intent(this, CertificateRepositoryActivity.class); startActivity(intent); } private void fileToSignHandwrittenSignature(){ Intent intent = new Intent(this, FileToSignHandwrittenSignatureActivity.class); startActivity(intent); } private void filesToPKCS7Sign(){ Intent intent = new Intent(this, FilesToPKCS7SignActivity.class); startActivity(intent); } // lanza activity para verificar un documento firmado private void verifyBDOCSignedFile(){ //Intent intent = new Intent(this, FileToSignHandwrittenSignatureActivity.class); Intent intent = new Intent(this, FileToVerifySignatureActivity.class); startActivity(intent); } // lanza activity para compartir un documento private void shareFile(String path){ Intent intent = new Intent(this, FileToShareActivity.class); intent.putExtra("path", path); startActivity(intent); } // lanza activity para cifrar un documento private void encryptFile(){ Intent intent = new Intent(this, FileToEncryptActivity.class); startActivity(intent); } // lanza la activity para gestionar los certificados de destinarios (cifrado) private void manageRecipientCertificates() { Intent intent = new Intent(this, EncryptionCertificatesActivity.class); startActivity(intent); } //Crea dialogo de opciones para firma electronica public AlertDialog makeSignatureOptionsDialog() { final String[] option = new String[] {getString(R.string.firmar_man_pdf), getString(R.string.firmar_elec_pdf), getString(R.string.firmar_pkcs7) }; ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, option); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.seleccione_opcion)); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: // Firma Manuscrita PDF Log.i("DEBUG", "antes de activity call"); fileToSignHandwrittenSignature(); break; case 1: // Firma Electronica PDF break; case 2: // Firma PKCS7 filesToPKCS7Sign(); break; default: break; } } }); return builder.create(); } // lanza activity para preferencias private void preferences(){ Intent intent = new Intent(this, PreferencesActivity.class); startActivity(intent); } //Crea dialogo de opciones para compartir archivos public AlertDialog makeShareOptionsDialog() { final String[] option = new String[] {getString(R.string.share_pdf_signed), getString(R.string.share_bdoc_downloaded), getString(R.string.share_extracted_file_from_bdoc), getString(R.string.share_encrypted) }; ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, option); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.seleccione_opcion)); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: // Archivo Firmado Log.i("DEBUG", "antes de activity call"); shareFile("archivoFirmado"); break; case 1: // Archivos BDOC Descargados shareFile("bdocDescargado"); break; case 2: // Archivos extraídos de BDOC shareFile("extraidoDeBdoc"); break; case 3: // Archivos cifrados shareFile("cifrado"); break; default: break; } } }); return builder.create(); } //Crea dialogo de opciones para gestionar certificados public AlertDialog makeCertificateOptionsDialog() { ; final String[] option; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH){ option = new String[] {getString(R.string.manage_personal_certificates), getString( R.string.manage_certificates_for_encryption) }; } else { option = new String[] {getString(R.string.manage_personal_certificates) }; } ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.select_dialog_item, option); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.seleccione_opcion)); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH){ switch (which) { case 0: // Certificados personales testRepository(); break; case 1: // Certificados para cifrado manageRecipientCertificates(); break; } } else { switch (which) { case 0: // Certificados para cifrado manageRecipientCertificates(); break; } } } }); return builder.create(); } }