xiaomiスキャナーアプリケーションを逆コンパイルし、スキャン結果を取得します

同僚からの提案がありました。

「結果をファイルと時間に書き込むためだけに、アンドロイド用のバーコードリーダーチップの缶を私に書いてください。私の兄弟が必要としています。」結局、それは私の兄弟にはわからなかった、そしてそれは必要ではなかった、そして一般的にチップの缶は高価である

興味深いことに、私はjsとandroidの既製のソリューションを試しました。既製のスキャナーアプリケーションを備えたxiaomiスマートフォンを持っているので、スキャン結果を取得してみませんか?わかりました。スキャナーからデータを取得するためのインテントや既製の手順に関する情報をグーグルで検索しようとしましたが、無駄でした。意図のためにアプリケーションマニフェストを再確認することが決定されました。



  1. 電話からAPKを見つけて受け取ります。



    adb shell
    ~:/pm list packages | grep scanner
    ~:/pm path com.xiaomi.scanner
    exit
    pull /system/priv-app/MiuiScanner/MiuiScanner.apk
    
  2. オンラインサービスを使用してapkを逆コンパイルします
  3. マニフェストを調べる。出くわす最初のアクションを見つけます。



    AndroidManifest.xml


  4. 新しいAndroidプロジェクトを作成し、スキャナー呼び出しを記述します。



      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