0
  1. 实际上,以前我想从图库中挑选图像,所以我知道 onActivityResult 已被弃用,我们应该使用 registerForActivityResult()。所以我通过将 mime 类型定义为“image/*”来使用它,但现在我想从图库中导入 pdf,但没有这样的 mime 类型,我想了解这些 mime 的工作原理以及我如何通过以下方式完成我的任务registerForActivityResult() 方法
  2. 我还想了解我们如何将 someActivityResultLauncher 的数据类型定义为字符串?我想了解这整个事情是如何运作的……我们可以自己定义自定义 mime 类型吗?请帮助我

''' 包 com.parth.iitktimes;

import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.material.card.MaterialCardView;

import java.io.IOException;

public class addBooks extends AppCompatActivity {
    private MaterialCardView selectImage;
    private TextView docName;
    private Spinner semSpinner, branchSpinner;
    private Button btnUpload;
    private ActivityResultLauncher<String> someActivityResultLauncher; // why string


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_books);
        selectImage = findViewById(R.id.select_image);
        docName = findViewById(R.id.tvDocName);
        semSpinner = findViewById(R.id.spinner_sem);
        branchSpinner = findViewById(R.id.spinner_branch);
        btnUpload = findViewById(R.id.btnUploadNotes);

        btnUpload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getApplicationContext(), "uploaded notes successfully", Toast.LENGTH_SHORT).show();
            }
        });
        selectImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                someActivityResultLauncher.launch("");//what used i fill here??
            }
        });

        String[] semesterItems = {"First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eighth"};

        //attaching array adapter to the spinner
        //since we not using custom spinner therefore we are using the default array adapter
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, semesterItems);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        semSpinner.setAdapter(adapter);


        //on item selected listener to the spinner
        semSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                imageCategory = eventSpinner.getSelectedItem().toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                //setting the default category as others
                imageCategory = spinnerItems[0];
            }
        });

        String[] branchItems = {"Mchanical", "Electrical", "CSE", "MTH"};

        //attaching array adapter to the spinner
        //since we not using custom spinner therefore we are using the default array adapter
        ArrayAdapter<String> branchAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, branchItems);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        branchSpinner.setAdapter(adapter);


        //on item selected listener to the spinner
        branchSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                imageCategory = eventSpinner.getSelectedItem().toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                //setting the default category as others
                imageCategory = spinnerItems[0];
            }
        });

        //activity result launcher
        someActivityResultLauncher = registerForActivityResult(
                new ActivityResultContracts.GetContent(), new ActivityResultCallback<Uri>() {
                    @Override
                    public void onActivityResult(Uri result) {
                        try {
                            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), result);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        preview_events_image.setImageBitmap(bitmap);
                    }
                });


    }
}
4

0 回答 0