Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - rub'n

#731
Hola, bueno bueno ok retomemos

Usa esta api, que es la ultima control + alt + s y en el buscador escribe android sdk



Como vas a usar otra api, debes crear una nueva unidad virtual, si por alguna razon no te quiera iniciar el .apk diciendo waiting for target device to come online android hazle wipe data como en la imagen siguiente



en tu archivo de compilación de gradle Module:app

Código (xml) [Seleccionar]

android {
   compileSdkVersion 28
   defaultConfig {
       applicationId "com.example.victor.miscompaneros"
       minSdkVersion 16
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}



este método lo vamos a invocar en la clase EditarContacto.java(Las clases se escriben con mayúsculas) en el onCreate() por ejemplo.
porque desde Marshmallow o superiores el código de solicitud 112 nos da permisos, en tiempo de ejecución


Código (java) [Seleccionar]

private void checkPermisosEnSdCard() {
    //chekea si esta applicacion tienes permisos de lectura/escritura
   int permisosSdCard = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

    //Si no posee permisos, los otorga para almacenamiento externo
   if(permisosSdCard != PackageManager.PERMISSION_GRANTED) {
       //Solicita por medio de una notificacion que esta app va a escribir en el la sd
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 112);
   }

}


Pues anteriormente leemos el archivo .txt cuando estaba en el directorio privado de la siguiente manera, bueno yo, tu no podías  :xD

Código (java) [Seleccionar]

//este metodo no es que no sirva, pero si vamos a leer ahora desde un directorio publico pues
@RequiresApi(api = Build.VERSION_CODES.N)
private String leerFichContactos(List contactos) {
   final StringBuilder sb = new StringBuilder();
   try(final BufferedReader bR = new BufferedReader(new InputStreamReader(openFileInput("contactos.txt")))) {
     
       bR.lines().forEach(texto -> sb.append(texto+"\n"));

   } catch (IOException ex) { ex.printStackTrace(); }
   return sb.toString();
}


Ahora así, no te dejes intimidar por el lijero cambio es casi lo mismo, en realidad no  me gusta ese InputStreamReader  :xD, y tambien que no necesitamos a openFileInput que retorna un FileInputStream, pero del directorio privado, no es este caso, estamos escribiendo y leyendo desde el public dir dog



No hace falta que le pases la lista como parámetro, porque leeremos desde el directorio
Código (java) [Seleccionar]

@RequiresApi(api = Build.VERSION_CODES.O)
private String leerFichContactos() {
   final StringBuilder sb = new StringBuilder();
   final Path path = Paths.get(Environment.getExternalStoragePublicDirectory("/Contactos/contactos.txt").toString());
   try (final BufferedReader reader = Files.newBufferedReader(path,StandardCharsets.UTF_8)) {

       reader.lines().forEach(texto -> sb.append(texto + "\n"));

   } catch (IOException ex) {
        ex.printStackTrace();
   }
       return sb.toString();
}


Otras cosas que se me había olvidado, por ejemplo para hacer el trabajo casi completo, bueno hasta que apliques todo lo que te menciono, si por casualidad no encuentras el directorio en el emulador, en archivos, en la esquina superior derecha debes darle mostrar almacenamiento interno.

En la linea 235, tu clase Contacto, tienes un contructor telescópico, cuando tengas una clase con unos 3 parámetros o mas, aplica
patron builder, la hará mas legible, mantenible etc.


yyyyy el método escribirDatosContactos()  :xD

lo primero que te mostré recuerda que en tu clase Contacto debes tener sobrescrito el método toString() si o si para este ejemplo, en el Android Studio oprime alt + insertar, y ahí puedes crear el toString() ya configurado con todas las instancias concatenadas.

#732
Hola,

Es mejor usar alguna clase que contenga un buffer interno algo mas grande para que la escritura lectura sea mas eficiente, BufferedWriter posser un buffer por default de 8192 bytes, mientras que FileWrite es de 1024bytes, aunque pues también funciona.



  • la line 23, se usa try-with-resources, usado en clases que implementen a AutoCloseable, evitando usar .close()
  • El método getTexto() se le concatenan saltos de linea, para crear un .bat con \r\n
  • Si vas escribir solo texto pues es mas fácil aun
  • En la linea 25, puedes Usar APPEND por CREATE, para insertar texto al final del archivo, sin borrar nada

Código (java) [Seleccionar]

package foro;

import javax.swing.*;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
/**
* @author rub´n
*/
public class TestFileChooser {

   public TestFileChooser() {

   }

   public void EscribirEnArchivo(final String texto) {
       //Async manera [b]sucia[/b]
       new Thread(() -> {
           //getDest() obtiene el path absoluto + se concatena con el nombre del archivo
           final Path directorio = Paths.get(getDest().toString() + "/TuNombreDeArchivo.bat");
           final StringBuilder sb = new StringBuilder();
           try(final BufferedWriter bW = Files.newBufferedWriter(directorio,StandardOpenOption.CREATE)) {
               bW.write(sb.append(texto).toString());
               JOptionPane.showMessageDialog(null,"Escritura Lista");
           } catch (IOException e) {
               e.printStackTrace();
           }
       }).start();
   }

   //Obtener destino
   private Path getDest() {
       final JFileChooser jFileChooser = new JFileChooser();
       jFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
       //jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); en este caso a ti te sirve escojer el directorio

       final int opc = jFileChooser.showOpenDialog(null);
       if (!(opc == 0)) {
           System.exit(0);
       }
       return jFileChooser.getSelectedFile().toPath();
   }

   private static String getTexto() {
       final StringBuilder sb = new StringBuilder();
       return sb.append("@echo off\r\n")
               .append("msg * Hola SrTrp\r\n")
               .append(":end")
               .toString();
   }

   public static void main(String... _0x72) {
       try {
           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
       } catch (Exception ex){ex.printStackTrace();}
       final TestFileChooser testFileChooser = new TestFileChooser();
       testFileChooser.EscribirEnArchivo(getTexto());
   }
}
#733
Cita de: antopixel en 10 Noviembre 2018, 05:24 AM
No se si conozcas el tema del RPA (Robotic process automation)?.
Pues lo que quieres hacer es algo que gracias a las nuevas herramientas que salieron especificamente para eso se puede hacer, la que yo uso se llama UiPath y corre con codigo .net, muy intuitiva y facil de usar con muchas opciones para crear tu propio bot; ya sea para aplicaciones de escritorio, web, lo de los clicks etc.

//Saludos compañero. ::)

:-\ es de pago homie, y usa version trial es mejor programar uno  >:D
#734
Cita de: alberto9860 en 22 Noviembre 2018, 00:49 AM
Buenas noches,

me da este error con un nuevo modulo que he instalado, alguien me puede guiar??



diosssssssssss,

pero que descripción tannnn detalladaaa, por lo menos colabora con mas detalle y log del error
#735
Seria bueno quedarse con esa botnet dog, jajaja

15btc le han puesto corazón de verdad, me trae recuerdos de uno que entraba a la pc de los scammer y de estos tipos que no hacen nada, para burlarse y luego reportarlos a la poli jajajaj
#736
Pregunta tambien tonta, tienes router o modem, no creo que ha estas alturas no sepas abrir puertos? , o usas negrok xq no puedes abrir, o no tienes los permisos para abrir los puertos ? , si puedes abrirlos hazlo, y no uses ngrok a ver
#737
Pero eso de crear una VM con multiples AVs ? no es funcional?
#738
dog esa anotación por alguna razón vía reflection no esta haciendo el trabajo, todo lo hice con la ultima API de android, si estas usando un api tan vieja sera por tus requerimientos  :-\ , algo pasa por ahí q no logro ver aun, baje hasta la api ICE CREAM

logro escribir el archivo en la sdDcard /Contactos/contactos.txt y visualizarlo por el Device File Explorer de momento

me reporto luego...

#739
Hola,

Bueno como decia Jack aka el popular the Ripper(destripador), empecemos por partes
     

Usa geshi, por segunda vez  :xD


  • Versión de Api que estas usando
  • Añadiste los permisos en el AndroidManifest.xml
  • Pregunta importante donde deseas escribir? en un directorio publico o privado?

y de paso tu  metodo

Código (java) [Seleccionar]

private void escribirDatosContactos(List contactos) {}


No usas el parámetro entrante ahí correspondiente a la linea 10 dog
#740
Cita de: desna en 14 Noviembre 2018, 08:53 AM
Movil:  Samsung Galaxy J3 (2016) - SM-J320FN

Hola he roteado el movil para eliminar app preinstaladas y queria saber si es seguro desistalar el navegador de Samsung ya que no tiene la opcion siquiera de desactivarlo como las app preinstaladas
y no se si sera perjudicial para las conexiones quitarlo
saludos

Quitalo puedes hacerlo, pero quizas te pueda generar alguna inestabilidad, igualmente buscate la rom stock de este samsung, respalda primero y luego flashea en caso de que tengas el SO mal dog

Cada teléfono es un mundo, y si ya lo tienes rooteado, pues arriésgate