Verdetto
Bahasa Indonesia

Memindai dari aplikasi lain

Verdetto menjawab tiga intent dan satu berbagi. Tidak ada yang memerlukan izin, pustaka, atau kunci. Orang itu tetap mendapat setiap pemeriksaan keamanan dan setiap pengaturan aplikasi; aplikasi Anda menerima teks kode pada saat ia mengonfirmasinya.

Intent-nya

ActionFilter di manifesYang terjadiHasil
com.google.zxing.client.android.SCANYa, intent implisit berfungsi.Membuka pemindai. Kode pertama yang dikunci orang itu dikembalikan, seperti yang dilakukan ZXing Barcode Scanner.RESULT_OK dengan SCAN_RESULT dan SCAN_RESULT_FORMAT
app.scanner.action.SCANYa.Membuka pemindai. Dimulai untuk hasil (result launcher atau startActivityForResult) ia mengembalikan kode dengan cara yang sama; dimulai biasa, ia hanya membuka aplikasi di pemindai.RESULT_OK dengan dua ekstra itu bila dimulai untuk hasil
app.scanner.action.CARDTanpa filter: hanya intent eksplisit dengan paket com.verdettoqr.scanner.Membuka editor kartu kontak milik orang itu, kode yang ia tunjukkan untuk berbagi datanya. Dimaksudkan untuk widget dan pintasan aplikasi sendiri; aplikasi lain boleh memanggilnya, tetapi tidak ada yang kembali.Tidak ada
android.intent.action.SEND dengan image/*Ya.Mendekode gambar: aplikasi menampilkan lembar hasil untuk kode di dalamnya.Tidak ada

Orang itu bisa mematikan pengembalian hasil di Pengaturan pada "Serahkan hasil ke aplikasi lain" ("Saat aplikasi meminta pindaian, kodenya dikembalikan ke aplikasi itu"), yang aktif secara bawaan. Bila dimatikan, kedua action pindai membuka pemindai sebagai peluncuran biasa dan launcher Anda menerima RESULT_CANCELED saat orang itu keluar. Kembali dari pemindai juga RESULT_CANCELED.

Saat ini tidak ada ekstra permintaan yang dibaca: bukan SCAN_MODE, SCAN_FORMATS, PROMPT_MESSAGE, SAVE_HISTORY, atau yang lain. Pemindai membaca setiap simbologi yang dikenalnya pada setiap panggilan. Kode yang ditandai pemeriksaan aplikasi tetap dikembalikan; orang itu melihat peringatannya dulu dan memutuskan.

Hasilnya

  • SCAN_RESULT (String): isi kode, persis byte yang dibawa kode, didekode sebagai teks (UTF-8 bila simbologinya mengizinkan, selain itu set karakter simbologi itu sendiri).
  • SCAN_RESULT_FORMAT (String): simbologi dalam huruf besar dengan garis bawah, memakai nama ZXing bila ada. Dikirim saat ini: QR_CODE, MICRO_QR_CODE, RMQR_CODE, DATA_MATRIX, AZTEC, PDF417, MAXICODE, HAN_XIN, EAN_13, EAN_8, UPC_A, UPC_E, CODE_128, CODE_39, CODE_93, CODABAR, ITF, DATABAR, DATABAR_EXPANDED, DATABAR_LIMITED, DX_FILM_EDGE, dan simbologi lain yang ditambahkan dekoder aplikasi sendiri, dengan ejaan yang sama (nama yang tampil di lembar hasil, dihurufbesarkan, spasi dan tanda hubung menjadi garis bawah).

Tidak ada yang lain ikut: tidak ada gambar, lokasi, atau riwayat.

Kotlin

private val scan = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        val text = result.data?.getStringExtra("SCAN_RESULT")
        val format = result.data?.getStringExtra("SCAN_RESULT_FORMAT")
        // use text and format
    }
}

fun startScan() {
    val intent = Intent("app.scanner.action.SCAN")
    if (intent.resolveActivity(packageManager) != null) scan.launch(intent)
    else startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(GET_VERDETTO)))
}

// the store page, with the developers referrer
private const val GET_VERDETTO =
    "https://play.google.com/store/apps/details?id=com.verdettoqr.scanner&referrer=utm_source%3Ddevelopers%26utm_medium%3Ddocs%26utm_campaign%3Ddevelopers"

Pada Android 11 ke atas, tambahkan query ke manifes Anda agar resolveActivity bisa melihat aplikasinya:

<queries>
    <intent>
        <action android:name="app.scanner.action.SCAN" />
    </intent>
</queries>

Java

private final ActivityResultLauncher<Intent> scan = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(), result -> {
            if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) {
                String text = result.getData().getStringExtra("SCAN_RESULT");
                String format = result.getData().getStringExtra("SCAN_RESULT_FORMAT");
                // use text and format
            }
        });

void startScan() {
    Intent intent = new Intent("app.scanner.action.SCAN");
    if (intent.resolveActivity(getPackageManager()) != null) scan.launch(intent);
    else startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(GET_VERDETTO)));
}

Action ZXing

Kode yang ditulis untuk ZXing Barcode Scanner tetap berfungsi: kirim com.google.zxing.client.android.SCAN dengan cara yang sama dan baca dua ekstra yang sama. Jika lebih dari satu pemindai di ponsel menjawabnya, sistem menanyakan kepada orang itu mana yang dipakai; mengirim intent ke paket com.verdettoqr.scanner melewati langkah itu.

Yang dilihat pengguna

Pemindai terbuka seperti biasa, dengan pemeriksaannya sendiri. Saat kode terkunci, aplikasi mengembalikannya dan menutup; tidak ada milik Anda yang muncul di layar, dan tidak ada milik orang itu (riwayat, pengaturan, daftar keamanan) yang tersentuh panggilan tersebut.

Menguji di ponsel tanpa aplikasi. Halaman toko dengan referrer pengembang, alamat yang sama yang dibuka fallback dalam contoh: Dapatkan di Google Play. Sumber halaman ini adalah INTENT.md aplikasi sendiri; bila keduanya berbeda, repositori aplikasi yang benar dan halaman ini yang tertinggal.