亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

圖像內容提供商是否有“庫存”選擇器?

圖像內容提供商是否有“庫存”選擇器?

慕村9548890 2022-05-21 18:36:43
例如,當我想在股票消息應用程序中將圖像附加到文本消息時,我會看到一個熟悉的系統對話框,其中顯示了相機、圖庫和其他圖像內容提供程序。我想在我自己的應用程序中使用它。我看到很多庫允許用戶在畫廊和相機之間進行選擇,但我希望所有用戶安裝的圖像源都出現。Messages(以及其他常用應用程序,例如 Mail)中的系統對話框真的是為這些應用程序定制的嗎?我們真的需要自己建造嗎?存儲訪問框架似乎不是正確的解決方案,因為它繞過了相機(或我沒有想到但可能存在于用戶設備上的其他圖像源)。
查看完整描述

2 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

我會建議Intent.ACTION_PICK


  private void selectFileFromGallery() {

    Intent intent = new Intent(Intent.ACTION_PICK,

        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    intent.setType("image/*");



    startActivityForResult(Intent.createChooser(intent,

        "Select Picture"), requestGallery);

  }

它將打開一個這樣的對話框,其中包含所有可用作圖像選擇器的用戶應用程序:

http://img1.sycdn.imooc.com//6288c0ee0001d49b06340231.jpg

然后當用戶選擇圖像時:


   @Override

  public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK) {

      if (requestCode == requestGallery) {

        onSelectFromGalleryResult(data);

      }

    }


           @SuppressWarnings("deprecation")

          private void onSelectFromGalleryResult(Intent data) {

            Uri uri = data.getData();

            if (!uri.toString().contains("file")) {

              if (uri.toString().contains("external")) {//chosen from external storage

                photoUri = Uri.parse("file://" + getRealPathFromURI(uri));

              } else {

                photoUri = Uri.parse("file://" + (Build.VERSION.SDK_INT <= 18

                    ? getRealPathFromURI_API11to18(getActivity(), uri) :

                    getRealPathFromURI_API19(getActivity(), uri)));

              }


            }


          @SuppressLint("NewApi")

          private String getRealPathFromURI_API19(Context context, Uri uri) {

            return RealPathUtil.INSTANCE.getRealPathFromURI_API19(context, uri);

          }


      public String getRealPathFromURI(Uri contentUri) {

        String[] proj = { MediaStore.Images.Media.DATA };

        Cursor cursor = getActivity().managedQuery(contentUri, proj, null, null, null);

        int column_index = cursor

            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

        cursor.moveToFirst();

        return cursor.getString(column_index);

      }

          @SuppressLint("NewApi")

          private String getRealPathFromURI_API11to18(Context context, Uri contentUri) {

            String[] proj = { MediaStore.Images.Media.DATA };

            String result = null;


            CursorLoader cursorLoader = new CursorLoader(

                context,

                contentUri, proj, null, null, null);

            Cursor cursor = cursorLoader.loadInBackground();


            if (cursor != null) {

              int column_index =

                  cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

              cursor.moveToFirst();

              result = cursor.getString(column_index);

            }

            return result;

          }


查看完整回答
反對 回復 2022-05-21
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

您要求的事情可以使用系統訪問框架工作來完成。在清單文件中添加存儲權限,然后檢查權限是否被接受。然后您可以打開打開的文檔選擇讓用戶選擇圖像。


代碼


在一些onClick里面


Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT);

i.addCategory(Intent.CATEGORY_OPENABLE);

i.setType("image/*");

startActivityForResult(i, 41);

這將只為圖像文件打開文件選擇器活動。


然后你可以在里面取回結果:


 @Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == Activity.RESULT_OK){

        if (requestCode == 41) {

            if (data != null) {

                Uri uri = data.getData();

                //This is the uri to the file

                //To get the file use the uri

            }

        }

    }

}

您仍然必須自己創建 BottomSheetDialog,但您的工作將大大減少,因為只有 2 個選項:1. 相機應用程序,2。文件選擇器。您必須自己處理相機事件并獲取圖像 uri。

http://img1.sycdn.imooc.com//6288c10600015a9c02410426.jpg

查看完整回答
反對 回復 2022-05-21
  • 2 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號