5

ich den neuen Kitkat Speicherzugriffsrahmen bin mit (SAF), wie hier angegeben: https://developer.android.com/guide/topics/providers/document-provider.htmlKitKat ACTION_OPEN_DOCUMENT zeigt keine Dokumente auf Samsung-Geräten

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 
intent.addCategory(Intent.CATEGORY_OPENABLE); 
intent.setType("image/*"); 
startActivityForResult(intent, 0); 

Dies ist das gleiche wie das Beispiel-Code ist aber die Bilder Filter funktioniert nicht. Nichts zeigt sich auf der S5 oder Note3. Das gleiche gilt für Video (Video/*). Ich habe auch versucht, andere Muster wie / nicht zu nutzen.

Das sieht aus wie ein Samsung-Problem, das von ihnen angesprochen werden sollte, ich frage mich nur, ob jemand eine Problemumgehung kennt.

Antwort

1

hatte ich das gleiche auf meinem Galaxy S4, und die einzige Abhilfe, die ich war es, die alte Art und Weise wiederzuverwenden gefunden:

Intent photoPickerIntent = new Intent();  
photoPickerIntent.setAction(Intent.ACTION_GET_CONTENT); 
photoPickerIntent.setType("image/*"); 
startActivityForResult(photoPickerIntent, 0); 

Aber ich nehme an, Sie zuerst sicher sein wollen, werden auf das jeweilige Gerät, da es funktioniert gut mit dem Intent.ACTION_OPEN_DOCUMENT auf anderen Geräten ... (Ich habe auf Wiko Cink Slim und Nexus 5 mit Android 4.4.2 versucht).

Hoffe, dass es Sie

+0

Danke dafür. Dies ist auch der "Workaround", auf den ich gerade zugreife, aber das Problem ist, dass Multiselektion nicht auf die alte Art und Weise möglich ist. Ich werde das als die Antwort markieren, wenn niemand etwas Besseres vorlegt. – frapim

8

hilft habe ich das gleiche Problem mit Blick auf Samsung Galaxy S4. Während meiner Recherche fand ich heraus, dass die Galaxie s4 den Mediendokumentenanbieter nicht unterstützte. Gelöst durch Abfragen der Medienanbieter-Schnittstelle. Das habe ich gemacht:

private void launchGallery() 
{ 
    final Intent intent = new Intent(); 
    // Api 19 and above should access the Storage Access Framework 
    if (isMediaProviderPresent()) 
     intent.setAction(Intent.ACTION_OPEN_DOCUMENT); 
    else 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
    intent.setType("image/*"); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 

    // Multi Picking is supported on api 18 and above. 
    if (isApi18Above()) 
     intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 

    startActivityForResult(Intent.createChooser(intent,"chooser"), 
     RESULT_PHOTO_FROM_GALLERY); 
} 


private boolean isMediaProviderSupported() 
{ 
    if(isApi19Above()) 
    { 
     final PackageManager pm = getActivity().getPackageManager(); 
     // Pick up provider with action string 
     final Intent i = new Intent(DocumentsContract.PROVIDER_INTERFACE); 
     final List<ResolveInfo> providers = pm.queryIntentContentProviders(i, 0); 
     for (ResolveInfo info : providers) 
     { 
      if(info != null && info.providerInfo != null) 
      { 
       final String authority = info.providerInfo.authority; 
       if(isMediaDocumentProvider(Uri.parse("content://"+authority))) 
        return true; 
      } 
     } 
    } 
    return false; 
} 

    private static boolean isMediaDocumentProvider(final Uri uri) 
    { 
     return "com.android.providers.media.documents".equals(uri.getAuthority()); 
    } 
+0

Danke für die Antwort. Ich glaube nicht, dass "Intent.EXTRA_ALLOW_MULTIPLE" funktioniert, wenn die alte Aktion verwendet wird, oder? – frapim

+1

@frapim Es funktioniert auf Google+ Fotos, aber nicht in anderen Clients. – AjayV

+0

Auch, wenn Sie diese Antwort mögen, können Sie bitte upvote? – AjayV

Verwandte Themen