【问题标题】:i needed a way to check data, is that exist or not on realtime database我需要一种检查数据的方法,实时数据库上是否存在
【发布时间】:2022-01-04 14:31:27
【问题描述】:

我有一个用于打开更高权限活动布局的二维码布局,我如何在 firebase 数据库上在线制作/搜索代码,如下所示

this what my firebase data look

下面是可以打开新活动的代码,但我希望每个管理员的代码都不同,所以如果管理员退休,我不需要每次都更改应用程序内的代码


public class BarcodeScanner extends AppCompatActivity {

    private CodeScanner mCodeScanner;
    private static final String Code = "newsenyum";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_barcode_scanner);
        CodeScannerView scannerView = findViewById(R.id.scanner_view);
        mCodeScanner = new CodeScanner(this, scannerView);
        mCodeScanner.setDecodeCallback(new DecodeCallback () {
            @Override
            public void onDecoded(@NonNull final Result result) {
               BarcodeScanner.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        String codeFromScanner = result.getText(); // initialize the code from scanner

                        if(Code.equals (codeFromScanner.trim ())){
                            redirectToNewActivity ();
                        }else{
                            Toast.makeText (BarcodeScanner.this, "QRCode Tidak Dapat di Gunakan", Toast.LENGTH_SHORT).show ( );
                        }
                    }
                });
            }
        });


        scannerView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mCodeScanner.startPreview();
            }
        });
    }



    private void redirectToNewActivity() {
        startActivity (new Intent (getApplicationContext ( ), AdminUID.class));
        finish ( );
    }

    @Override
    protected void onResume() {
        super.onResume();
        mCodeScanner.startPreview();
    }

    @Override
    protected void onPause() {
        mCodeScanner.releaseResources();
        super.onPause();
    }

}

this is the code

【问题讨论】:

  • 我很难理解问题所在。这段代码中究竟有什么不符合您的预期?
  • @AlexMamo 所以我希望 private static final String Code = "newsenyum"; 在 firebase 管理员帐户上
  • 对不起,我还是不明白你在找什么,
  • @AlexMamo 我想检查一个存在于实时 firebase 上的字符串,看起来像 barcode code : pa29h9h75dg,就像检查这个字符串是否存在于 firebase 但不仅存在于一个帐户中跨度>
  • @AlexMamo 也许我试图更具体地解释最重要的问题,我一直在编辑它,对不起,如果我在这里的英语不好,很难解释我的问题

标签: java android firebase-realtime-database qr-code


【解决方案1】:

要检查数据库中是否存在特定的条形码,您需要使用 Query 对象。所以请使用以下代码行:

DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference adminRef = db.child("Admin");
Query queryByCode = adminRef.orderByChild("barcode code").equalTo("pa29h9h75dg");
queryByCode.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (task.isSuccessful()) {
            DataSnapshot snapshot = task.getResult();
            if(snapshot.exists()) {
                Log.d("TAG", "Barcode already exists.");

                for (DataSnapshot ds : snapshot.getChildren()) {
                    String id = ds.child("id").getValue(String.class);
                    Log.d("TAG", id);
                }
            } else {
                Log.d("TAG", "Barcode doesn't exist.");
            }
        } else {
            Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
        }
    }
});

logcat 中的结果将是:

Lela

【讨论】:

  • 好的,让我现在试试
  • 是的。试一试,告诉我它是否有效。
  • idk 为什么,但我无法从上面的二维码获取文本
  • 看不到文字是什么意思?你指的是id吗?如果是,请检查我的更新答案。
  • 还没有,但让我现在试试,然后打勾:)
猜你喜欢
  • 1970-01-01
  • 2013-01-18
  • 2014-02-03
  • 2022-10-02
  • 2012-06-26
  • 2020-12-27
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
相关资源
最近更新 更多