Eliminar Apk después de la instalación de la aplicación

Estoy trabajando en una aplicación en la que tengo que restringir al usuario para compartir el apk personalmente. Se puede descargar, pero no se debe permitir compartir la App (apk) personalmente a través de bluetooth, etc

Busqué y leí mucho sobre el mismo problema, pero no encontré una respuesta completa. He intentado lo siguiente.

  1. Cómo obtener el archivo * .apk ubicación en el dispositivo Android

  2. Descargar, instalar y eliminar el archivo .apk en el dispositivo android mediante programación de un sitio web que no sea el de mercado

Lo que he entendido desde arriba es que la manera fácil de hacerlo es eliminar el archivo apk del dispositivo del usuario después de instalar la aplicación. (También sé que el usuario puede generar este apk de nuevo a través del acceso de root, pero que está bien, ya que al menos podré restringir no todos sino muchos).

Ahora lo que he intentado, estoy registrando un receptor de Broadcast y en mi método onReceive() tengo el siguiente,

 PackageManager pm = getPackageManager(); for (ApplicationInfo app : pm.getInstalledApplications(0)) { if (myPackage.equalsIgnoreCase(app.packageName)) { apkPath = app.sourceDir; break; } } Log.d("Package", myPackage + " - APK - " + apkPath); if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) { File sdcard = Environment.getExternalStorageDirectory(); File file = new File(sdcard, apkPath); file.delete(); } 

Pero esto no hace nada ya que no estoy al tanto del IntentFilter que debería usar para registrar esto.

¿Puede alguien guiarme en cuál es el siguiente paso? Y en caso de que estoy completamente en una tierra equivocada, entonces ayúdame a lograr lo anterior?

Cualquier ayuda será apreciada. 🙂

6 Solutions collect form web for “Eliminar Apk después de la instalación de la aplicación”

En las versiones posteriores de Android, algunas (todas?) Transmisiones no se envían a una aplicación hasta que se ha abierto manualmente al menos una vez. Esta es una característica de seguridad que no se puede eludir.

Por lo que sé, No es posible escuchar el evento de difusión completa de la instalación. Api de Android con acción de difusión: "ACTION_PACKAGE_ADDED" Pero el paquete recién instalado no recibe esta transmisión. Fuente: Aquí

Mi sugerencia es comprobar en su primera actividad del lanzador y suprimir el apk.

Puedes utilizar el Servicio de licencias de aplicaciones de Android aquí. Consulte http://developer.android.com/google/play/licensing/index.html y la implantación aquí http://developer.android.com/google/play/licensing/adding-licensing.html .

Esto asegurará que el apk no puede ser compartido (protegiéndolo) usando cualquiera de las aplicaciones disponibles en el mercado.

Lo siento por mal inglés.

Aquí mi código solución no real:

1) establecer su broadcastreciver cuando cualquier nueva aplicación se instale en su dispositivo.

2) Cuando su broadcastreciver es llamada, ese tiempo usted escribe el código en el método de onRecive () comprueba el paquete de la aplicación si instala o no

  private boolean isPackageInstalled(String packagename, Context context) { PackageManager pm = context.getPackageManager(); try { pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES); return true; } catch (NameNotFoundException e) { return false; } } 

Usando este método o cualquiera si obtiene verdadero significa que su aplicación está instalada

3) si obtiene true del método isPackageInstalled ("com.download.app", context) que elimina archivos apk de su tarjeta SD o cualquier loaction en el dispositivo

Si usted más aclaración voy a ser explicar.

He utilizado la idea de crear una carpeta cuando la aplicación se ejecuta por primera vez. Si no existe, eliminar el apk. Si la carpeta existe, entonces el apk ya se ha eliminado. Esta carpeta se eliminará por sí sola si la aplicación se ha desinstalado.

 public static String link = Environment.getExternalStorageDirectory() .getPath() + "/Android/data/YourAppPackageName/"; //check if its running for the first time File f = new File(link); if (f.exists()) { File f1 = new File("/data/app/YourAppPackageName.apk") if(f1.exists()){f1.delete();} } else { f.mkdirs(); } 

También puede utilizar el producto HockeyApp y distribuirlo con la aplicación Android que proporcionan, así como habilitar las funciones de "restricción". Estoy bastante seguro de que hará lo que necesita sin tener que escribir código extra.

  • Android: ¿Debo usar BroadcastReceiver vs Messenger vs BindService vs Handler
  • Android: validar la identidad del remitente de la intención
  • No se puede instanciar el receptor en BroadcastReceiver SMS
  • NotificationManager.cancel (id) no funciona dentro de un receptor de difusión
  • KeyEvent.ACTION_UP activado DOS VECES para ACTION_MEDIA_BUTTON
  • Difusión en contacto agregar / cambiar?
  • Android: Detectar eventos de cambio de actividad / aplicación
  • Obtener acceso a SQL en Broadcastreceiver
  • Cómo detectar el estado contestado o rechazado en la llamada saliente
  • ¿Cuándo anular el registro de BroadcastReceiver? En onPause (), onDestroy (), o onStop ()?
  • C2DMBroadcastReceiver's onReceive no está ejecutando (Para Registro)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.