2013-05-15 2 views
0

갤러리에서 사진을 선택하기위한 옵션을 사용자에게 제공하는 작은 걸음 걸이. 특정 휴대 전화에서 사용자가 의도를 처리한다고 주장하는 앱이 더 많아서 선택 사항으로 표시됩니다 ... 표준 문제 사진 갤러리 만 표준 방식으로 필터링 할 수있는 방법이 있습니까?Android Intent.ACTION_GET_CONTENT (ResolveInfo의 특정 앱만 사용)

p.queryIntentActivities의 첫 번째 항목이 항상 갤러리입니까? 여기

그래서 우리가 한 resolveinfo을 얻는 경우에 .... 우리가 애플 리케이션의 목록을 얻기 위해 무엇을하고 있는지

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); 

입니다 ... 좋은! 그러나 목록에서 여러 항목을 얻는다면 ... packageName으로 필터링하는 것은 어떤 packageName이 될지 모르기 때문에 일종의 해커처럼 보일 것입니다. 거기에는 너무 많은 다른 전화가 있습니다.

어떤 조언이 필요합니까?

답변

1

의도가있는 사용자를 처리한다고 주장하는 앱이 더 많은 휴대 전화에서는 표준 사진 갤러리 만 표준 방식으로 필터링 할 수있는 방법이 있습니까?

아니요, "표준 문제 포토 갤러리"가 없기 때문입니다.

p.queryIntentActivities의 첫 번째 항목은 항상 갤러리입니까?

번호

어떤 조언을?

사용자는 image/* MIME 유형의 경우 ACTION_GET_CONTENT을 지원하는 선택한 모든 앱에서 이미지를 선택할 수 있습니다.

+0

감사합니다, 좋은 알고 있습니다. – Chris

+0

사용자가 앱을 선택하도록 허용하면 onActivityResult가이 대화 상자를 캡처하고 resultCode가 false가됩니다. 그래서이 대화 상자를 비활성화하고 갤러리를 직접 열고 싶습니다. 어떤 생각? – wisemann

0

다음은 ResolveInfo의 특정 응용 프로그램을 사용하는 방법입니다. 이것은 정확히 사용할 응용 프로그램을 알고 "사용하는 전체 동작"대화 상자를 표시하지 않으려는 경우에 유용합니다. Intent.ACTION_GET_CONTENT에 응답 애플 리케이션을위한

  1. 쿼리

    Intent intent= new Intent(Intent.ACTION_GET_CONTENT, null); 
    intent.setType("image/*"); 
    mApps = context.getPackageManager().queryIntentActivities(intent, 0); 
    
  2. MAPPS는 Intent.ACTION_GET_CONTENT 의도를 지원하는 모든 응용 프로그램의 목록을 개최한다. 원하는 응용 프로그램에 대한

  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); 
    
관련 문제