Descompilamos la aplicación del escáner xiaomi y tomamos el resultado del escaneo

Un colega tuvo una sugerencia:

"Escríbeme por una lata de chips un lector de código de barras para Android, solo para escribir los resultados en los archivos y el tiempo que mi hermano necesita". Al final, resultó que no para mi hermano, y no era necesario, y en general una lata de papas fritas es cara.

Por interés, revisé las soluciones listas para usar en js y android, y desde entonces. Tengo un teléfono inteligente xiaomi con una aplicación de escáner lista para usar, pensé, ¿por qué no intentar simplemente tomar los resultados del escaneo? Ok, intenté buscar en Google información sobre intenciones o instrucciones listas para usar para obtener datos del escáner, pero fue en vano. Se decidió hacer un reconocimiento del manifiesto de la aplicación en busca de intenciones.



  1. Busque y recoja el APK del teléfono.



    adb shell
    ~:/pm list packages | grep scanner
    ~:/pm path com.xiaomi.scanner
    exit
    pull /system/priv-app/MiuiScanner/MiuiScanner.apk
    
  2. Descompilamos apk usando un servicio en línea .
  3. Examinando el manifiesto. Encuentra la primera acción que se presente.



    AndroidManifest.xml


  4. Cree un nuevo proyecto de Android y escriba una llamada al escáner.



      val intent = Intent("miui.intent.action.scanbarcode")
       startActivityForResult(intent, 1);
    
  5. , … , , ? , . .



    ScanActivity.java




    .

  6. , EXTRA_INTENT_IS_BACKTO_THIRDAPP isBackToThirdApp.



    AppUtils.java


  7. .



      val intent = Intent("miui.intent.action.scanbarcode")
      intent.putExtra("isBackToThirdApp",true)
      startActivityForResult(intent, 1);
    
  8. .



            super.onActivityResult(requestCode, resultCode, data)
            if (resultCode==Activity.RESULT_OK){
                    result.setText(data?.extras?.getString("result"))
            } 
    
  9. .
  10. , Xiaomi ,



All Articles