QR 代码生成器从 Firebase 身份验证获取 UserID

QR code generator to get UserID from Firebase Authentication

下面我使用 zxing 库创建了一个 QR 码生成器。它现在的工作方式是用户在 editText 中输入文本,当他们点击 Generate 按钮 时,它 显示 带有该文本的二维码。

我的问题是,有没有办法让我更改以下代码,以便它 获取当前用户 ID(在用户注册时从 firebase 身份验证)和 将其打印到 editText 按钮?

我的目标是让 QR 码获取已登录的 当前用户 并从 [=24= 获取他们的 userID ]Firebase 并仅根据用户 ID 创建二维码。

如果是这样,我很感激任何帮助,或者如果他们是一种更简单的方法,我愿意接受建议 - 提前致谢。

CodeQR.java

public class CodeQR extends AppCompatActivity {

    EditText User_txt;
    Button generateBtn;
    ImageView qrImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_code_q_r);

        User_txt = (EditText)findViewById(R.id.user_id);
        generateBtn = (Button)findViewById(R.id.generate_btn);
        qrImage = (ImageView)findViewById(R.id.imageview);

        generateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MultiFormatWriter multiFormatWriter = new MultiFormatWriter();

                try{
                    BitMatrix bitMatrix = multiFormatWriter.encode(User_txt.getText().toString(),BarcodeFormat.QR_CODE,500,500);
                    BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
                    Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
                    qrImage.setImageBitmap(bitmap);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        });
    }

}

CodeQR.xml

<LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="413dp"
    android:layout_height="160dp"
    android:layout_weight="1"
    android:background="@drawable/header_menu"
    android:gravity="bottom"
    android:orientation="vertical"
    android:padding="12dp"
    tools:ignore="MissingConstraints">

    <TextView
        android:id="@+id/code_txt"
        android:layout_width="281dp"
        android:layout_height="64dp"
        android:text="QR Code"
        android:textColor="#000000"
        android:textSize="30sp" />
</LinearLayout>

<EditText
    android:id="@+id/user_id"
    android:layout_width="match_parent"
    android:layout_height="104dp"
    android:hint="Enter your UserID"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.287" />

<Button
    android:id="@+id/generate_btn"
    android:layout_width="178dp"
    android:layout_height="84dp"
    android:layout_gravity="center"
    android:gravity="center"
    android:text="GET QR Code"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.536"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.459" />

<ImageView
    android:id="@+id/imageview"
    android:layout_width="281dp"
    android:layout_height="245dp"
    android:layout_gravity="center"
    android:background="#ffffff"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.569"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.82" />


</androidx.constraintlayout.widget.ConstraintLayout>

你可以试试下面的代码-

public class CodeQR extends AppCompatActivity {

    EditText User_txt;
    Button generateBtn;
    ImageView qrImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        .........

        generateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //you can put a check here for null user
                setupUserQRcode(FirebaseAuth.getInstance().getCurrentUser().getUid());

            }
        });
    }

    private void setupUserQRcode(String firebaseUID) {
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        try {
            BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
            BitMatrix bitMatrix = multiFormatWriter.encode(firebaseUID, BarcodeFormat.QR_CODE, 500, 500);
            Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
            qrImage.setImageBitmap(bitmap);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

确保您 setup 您的项目首先使用 Firebase。