/ / Как да накарам приложението си да се показва в инструмента за избор на приложения? - Java, Android, PDF, android-намерение

Как да направя приложението ми да се показва в инструмента за избор на приложения? - java, android, pdf, android-intention

Искам да рекламирам, че моето приложение е способно да преглежда PDF файлове, така че да се появява в селектора на приложения, когато е избран PDF файл от файловия мениджър.

Ето как изглеждат моите филтри за намерение

<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="application/pdf" />
</intent-filter>
</activity>

Всеки път, когато отворя PDF от файловия мениджър, той автоматично избира друг pdf ап, наречен Polaris Viewer.

Проверих, за да се уверя, че Polaris не е приложение по подразбиране, при настройки на приложението. Той казва, че няма зададени настройки по подразбиране.

Също така изтеглих приложение от трета странаНамерение за прекъсване. Ако избера PDF файл от файловия мениджър, ще се появи избор на приложение, показващ Polaris и Intent Intercept. Ако изберете Intent Intercept, той ми казва, че и Polaris, и моето приложение (Rollout PdfEditor) съвпадат с намерението. Това е изходът от Intent Interceptor:

ДЕЙСТВИЕ: android.intent.action.VIEW

DATA: file: ///storage/sdcard0/Download/download.pdf ТИП: приложение / pdf

КАРТОНИ: FLAG_ACTIVITY_FORWARD_RESULT FLAG_ACTIVITY_PREVIOUS_IS_TOP

Екстри: ДОПЪЛНИТЕЛНО 1: Клас: java.lang.Булева Ключ: предварителен преглед Стойност: false ДОПЪЛНИТЕЛНО 2: Клас: java.lang.String Ключ: key_filename Стойност: /storage/sdcard0/Download/download.pdf ДОПЪЛНИТЕЛНО 3: Клас: android.net.Uri $ HierarchicalUri Ключ: android.intent.extra.STREAM ДОПЪЛНИТЕЛНО 4: Клас: java.lang.Integer Ключ: sort_order Стойност: 0

2 ДЕЙНОСТИ СВЪРЖЕТЕ СЕ С НАС: Polaris Viewer 4.1 (com.infraware.polarisviewer4 - com.infraware.polarisoffice4.OfficeLauncherActivity) Разгъване на PdfEditor (com.example.rolloutpdfeditor - com.example.rolloutpdfeditor.MainActivity)>

Отговори:

4 за отговор № 1

Липсва ви задължително <category /> от вашите IntentFilter! ако погледнете документацията за <category /> казва:

Забележка: За да получавате скрити намерения, трябва да включите Категория CATEGORY_DEFAULT в филтъра за намерение. Методите startActivity () и startActivityForResult () третират всички намерения като те обявиха категорията CATEGORY_DEFAULT. Ако не го декларирате във филтъра ви за намерение няма да се решават скрити намерения за вашия дейност.

Така че винаги трябва да включите android.intent.category.DEFAULT като категория за IntentFilter да работят изобщо. Ако искате приложението да може да се справя с pdf връзки от браузър или други приложения, които също трябва да включите android.intent.category.BROWSABLE, Можете да намерите документация за това BROWSABLE тук, Той гласи:

CATEGORY_BROWSABLE
Целевата дейност позволява да бъде стартирана от уеб браузър, за да се показват данни, посочени в връзка - например изображение или имейл.

Опитайте тази IntentFilter:

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/pdf" />
</intent-filter>

Мисля, че ти липсват тези две категории.