11

ich meine Hand auf Speicherzugriffsrahmen Android 4.4Keine Aktivität Intent zu handhaben gefunden - android.intent.action.OPEN_DOCUMENT

Ich habe einen Dummy-App entwickelt, ich versuche, die eine Absicht zu Beginn der Tätigkeit abfeuert.

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    startActivityForResult(intent, READ_REQUEST_CODE); 

Auch ich habe eine andere Dummy-App entwickelt, die als Datei-Provider dient.

 <?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.saf" 
    android:versionCode="1" 
    android:versionName="1.0" > 
<uses-sdk 
    android:minSdkVersion="19" 
    android:targetSdkVersion="19" /> 

<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.saf.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <provider 
     android:name="com.example.saf.MyFileProvider" 
     android:authorities="com.example.saf.documents" 
     android:exported="@bool/is_kitkat" 
     android:enabled="@bool/is_kitkat" 
     android:grantUriPermissions="@bool/is_kitkat" 
     android:permission="android.permission.MANAGE_DOCUMENTS"> 
     <intent-filter> 
      <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> 
     </intent-filter> 
    </provider> 

</application> 

Ich habe die Klasse MyFileProvider umgesetzt.

Aber wenn ich den Benutzer-App (die, die die Absicht feuert) starten, erhalte ich die folgenden Fehler

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.OPEN_DOCUMENT cat=[android.intent.category.OPENABLE] } 

ich folgenden Entwickler docs von android nur wurde. Irgendwelche Ideen, was ich falsch machen könnte?

Edit: Hier ist mein letztes Manifest. Muss ich auch eine "richtige" Implementierung des MyFileProvider "extends DocumentsProvider" haben? Kann ich gerade null in den Funktionen für jetzt zurückgeben?

+0

Verwendet Ihre Dummy-App-Berechtigung 'android.permission.MANAGE_DOCUMENTS'? –

+0

@SherifelKhatib - eigentlich hatte es diese Erlaubnis nicht. aber ich habe es hinzugefügt und überprüft. immer noch der gleiche Fehler. – yashdosi

Antwort

8

Fügen Sie einen Mime-Typ hinzu oder einfach intent.setType("*/*").

Dies scheint ein known issue zu sein. setType() ist erforderlich.

Edit: Sie müssen auch android:enabled="true" hinzufügen, beachten Sie, dass Sie es von Werten und nicht direkt beziehen sollten, um es nur für> = kitkat zu aktivieren. So android:enabled="@bool/is_kitkat", <bool name="atLeastKitKat">false</bool> in /res/values/ und <bool name="atLeastKitKat">true</bool> in /res/values-v19/

+0

es hat funktioniert! aber ich kann immer noch nicht meine Host-App sehen, die als Provider arbeitet. – yashdosi

+0

immer noch nicht in der Lage, meine Host-App zu sehen, die als Anbieter arbeitet. – yashdosi

+0

können Sie das Manifest für diese App veröffentlichen? – hypd09

1

alle Dateien öffnen fügen Sie diese Zeile:

intent.setType("*/*") ; 

und wenn Sie benötigen, filtern Bilder diese Zeile hinzufügen anzuzeigen:

intent.setType("image/*"); 
0

Nur Wirf deine Absicht, wie,

 Intent intent = new Intent("android.intent.action.GET_CONTENT"); 
    ((Intent)intent).addCategory("android.intent.category.OPENABLE"); 
    ((Intent)intent).setType("*/*");