Tworzę generator kodów QR i jest przycisk „zapisz”. więc chcę, aby po naciśnięciu przycisku zapisywania było zapisane w pamięci telefonu. ale kiedy uruchamiam ten kod, kod QR generuje się dobrze, ale nie zapisuje go, pokazuje mi to w Toast „Nie zapisano obrazu”. jak mogę zapisać ten problem? Chcę zapisać kod QR jako obraz w pamięci telefonu. wtedy ludzie mogą go zapisać i używać. Mam nadzieję, że pomożecie mi rozwiązać ten problem. z góry dziękuję.



    EditText editText;
    ImageView imageView;
    Button btnGenerate, save;
    Bitmap bitmap;




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


        editText = findViewById(R.id.editText);
        imageView = findViewById(R.id.imageView);
        btnGenerate = findViewById(R.id.generate);
        save = findViewById(R.id.save);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);


        btnGenerate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String data = editText.getText().toString();

                if (data.isEmpty()) {

                    editText.setError("Value Required");
                } else {

                    QRGEncoder qrgEncoder;
                    qrgEncoder = new QRGEncoder(data, null, QRGContents.Type.TEXT, 500);

                    try {
                        bitmap = qrgEncoder.encodeAsBitmap();
                        imageView.setImageBitmap(bitmap);
                    } catch (WriterException e) {
                        e.printStackTrace();
                    }
                }


            }
        });


        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                boolean save;
                String result;
                String savePath = Environment.getExternalStorageDirectory().getPath() + "/QRCode/";

                try {
                    save = QRGSaver.save(savePath, editText.getText().toString().trim(), bitmap, QRGContents.ImageType.IMAGE_PNG);
                    result = save ? "Image Saved" : "Image Not Saved";
                    Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
        });


    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        if (item.getItemId()== android.R.id.home){
            this.finish();

        }
        return super.onOptionsItemSelected(item);
    }
}

Dodaję również to uprawnienie w pliku manifestu.

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
0
MD Tayobur Rahman 20 grudzień 2019, 02:59

1 odpowiedź

Spróbuj zmienić

Environment.getExternalStorageDirectory().getPath() + "/QRCode/"

Do

Environment.getExternalStoragePublicDirectory().getPath() + "/QRCode/"

I nie zapomnij sprawdzić uprawnień użytkownika

0
adi purnama 20 grudzień 2019, 11:00