Nous décompilons l'application du scanner xiaomi et prenons le résultat du scan

Un collègue a une suggestion:

"Ecrivez-moi pour une boîte de puces un lecteur de code-barres pour Android, juste pour écrire les résultats dans les fichiers et l'heure dont mon frère a besoin." En fin de compte, cela s'est avéré pas à mon frère, et ce n'était pas nécessaire, et en général une boîte de chips coûte cher

Par intérêt, j'ai parcouru des solutions prêtes à l'emploi dans js et android, et depuis. J'ai un smartphone xiaomi avec une application de numérisation prête à l'emploi, j'ai pensé, pourquoi ne pas essayer de prendre simplement les résultats de l'analyse? Ok, j'ai essayé de google info sur les intentions ou les instructions prêtes à l'emploi pour obtenir des données du scanner, mais en vain. Il a été décidé de reconnaître le manifeste de l'application pour des intentions.



  1. Recherchez et récupérez l'APK sur le téléphone.



    adb shell
    ~:/pm list packages | grep scanner
    ~:/pm path com.xiaomi.scanner
    exit
    pull /system/priv-app/MiuiScanner/MiuiScanner.apk
    
  2. Nous décompilons apk en utilisant un service en ligne .
  3. Examen du manifeste. Trouvez la première action qui se présente.



    AndroidManifest.xml


  4. Créez un nouveau projet Android et rédigez un appel de scanner.



      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