Frage

Ich versuche mich am Storage Access Framework von Android 4.4

Ich habe eine Dummy-App entwickelt, die beim Start der Aktivität eine Absicht auslöst.

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

Außerdem habe ich eine weitere Dummy-App entwickelt, die als Dateianbieter 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 implementiert.

Aber wenn ich die Benutzer-App starte (diejenige, die die Absicht auslöst), erhalte ich die folgende Fehlermeldung

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

Ich habe gerade die Entwicklerdokumente von Android befolgt.Irgendwelche Ideen, was ich falsch machen könnte?

Bearbeiten:Hier ist mein neuestes Manifest.Benötige ich außerdem eine „richtige“ Implementierung des MyFileProviders, der „DocumentsProvider erweitert“?Kann ich in den Funktionen vorerst einfach null zurückgeben?

War es hilfreich?

Lösung

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

Das scheint ein zu sein bekanntes Problem. setType() ist erforderlich.

Bearbeiten:Sie müssen auch hinzufügen android:enabled="true", Beachten Sie, dass Sie von Werten darauf verweisen sollten und nicht direkt, um es nur für >=kitkat zu aktivieren.Also android:enabled="@bool/is_kitkat", <bool name="atLeastKitKat">false</bool> In /res/values/ Und <bool name="atLeastKitKat">true</bool> In /res/values-v19/

Andere Tipps

Um alle Dateien zu öffnen, fügen Sie diese Zeile hinzu:

generasacodicetagpre.

und wenn Sie filtern müssen, um Bilder anzuzeigen, fügen Sie diese Zeile hinzu:

generasacodicetagpre.

werfen Sie einfach Ihre Absicht, wie,

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top