簡體   English   中英

Android Intent.ACTION_GET_CONTENT(僅使用ResolveInfo中的特定應用程序)

[英]Android Intent.ACTION_GET_CONTENT (only use specific apps from ResolveInfo)

在這里遇到了一個小障礙,為用戶提供了從圖庫中選擇照片的選項。 在某些手機上,有更多的應用程序聲稱可以處理用戶的意圖,讓他們可以選擇……是否有辦法以一種標准的方式將其過濾為僅標准的照相館?

p.queryIntentActivities中的第一項將始終是圖庫嗎?

這是我們正在獲取應用程序列表的方法。

Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("image/*");
i.putExtra("return-data", true);
PackageManager p = new PackagerManager();
List<ResolveInfo> list = p.queryIntentActivities(i, 0);

因此,如果我們僅獲得一個resolveinfo ...太好了! 但是,如果列表中有多個項目...按packageName進行過濾似乎有點麻煩,因為我們不知道packageName是什么...那里有太多不同的手機。

有什么建議嗎?

在某些手機上,有更多的應用程序聲稱可以處理用戶的意圖,讓他們可以選擇……是否有辦法以一種標准的方式將其過濾為僅標准的照相館?

不,因為沒有“標准問題照相館”。

p.queryIntentActivities中的第一項將始終是圖庫嗎?

沒有。

有什么建議嗎?

允許用戶從他們選擇的任何支持ACTION_GET_CONTENT應用中選擇image/* MIME類型的image/*

這是使用來自ResolveInfo的特定應用程序的方法:當您確切地知道要使用哪個應用程序並且不想顯示“使用完成操作”對話框時,這很有用。

  1. 查詢響應Intent的應用。ACTION_GET_CONTENT:

     Intent intent= new Intent(Intent.ACTION_GET_CONTENT, null); intent.setType("image/*"); mApps = context.getPackageManager().queryIntentActivities(intent, 0); 
  2. mApps將保存所有支持Intent.ACTION_GET_CONTENT Intent的應用程序的列表。

  3. 為您所需的應用觸發startActivityForResult:

     ResolveInfo info = mApps.get(position); // depends on which app you want to start String packageName = info.activityInfo.packageName; Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setPackage(packageName); // this will direct the intent to your specific app intent.setType("image/*"); intent.putExtra("crop", "true"); ... startActivityForResult(intent, PICK_IMAGE); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM