Android получает текстовый файл общего доступа, но не общий доступ к текстовому контенту

Я делаю приложение, которое может загружать один или несколько файлов или папок. Фильтр намерений определяется следующим образом:

    <activity android:name=".UploadActivity" android:launchMode="singleTop" android:theme="@style/Theme.Sherlock">
        <intent-filter android:label="@string/upload_intent">
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:mimeType="application/*" />
            <data android:mimeType="audio/*" />
            <data android:mimeType="image/*" />
            <data android:mimeType="media/*" />
            <data android:mimeType="multipart/*" />
            <data android:mimeType="text/*" />
            <data android:mimeType="video/*" />
        </intent-filter>
        <intent-filter android:label="@string/upload_intent">
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:mimeType="*/*" />
        </intent-filter>
    </activity>

Он отлично работает с Blackmoon File Explorer и Android 4.0.3 Gallery. Мое приложение отображается в меню «Поделиться». Однако это также отображается в браузере, когда вы долгое время нажимаете URL-адрес и выбираете «Поделиться страницей».

Когда я отправляю текстовый файл в свое приложение, я получаю следующее:

getIntent().getAction() returns Intent.ACTION_SEND
getIntent().getType() returns "text/plain"
getIntent().getScheme() returns null
getIntent().getExtras().getString(Intent.EXTRA_STREAM) returns the filename

Однако отправка URL-адреса из браузера возвращает то же самое минус Intent.EXTRA_STREAM. Я легко могу обнаружить это в коде и сказать: «Эй, я не могу загрузить текст!» но я бы предпочел изменить фильтр намерений, чтобы он срабатывал только при наличии EXTRA_STREAM. Возможно ли это сделать?

(Я пробовал использовать схему android:, но при этом не будет различаться между файлом и текстовой строкой, которые используются совместно, поскольку они оба имеют значение NULL ...)

5
задан albnok 2 March 2012 в 10:22
поделиться