Как узнать причину запуска приложения?

У меня в AndroidManifest у одного Activity стоит:

<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" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="myapp" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:host="*" android:mimeType="*/*" />
    <data android:pathPattern=".*\\.ext1" />
    <data android:pathPattern=".*\\.ext2" />
    <data android:pathPattern=".*\\.ext3" />
    <data android:scheme="content" />
    <data android:scheme="file" />
</intent-filter>

И приложение работает без ошибок, но:
1.Я хочу узнать, как понять по какому фильтру произошёл запуск (просто пользователь нажал на иконку приложения или например выбрал моё приложение в "открыть файл с помощью")?
2.Как мне получить путь к файлу, который открывают с помощью моего приложения?


Ответы (1 шт):

Автор решения: Tiarait

Для определения intent-filter (kotlin):

if (intent?.action == "android.intent.action.MAIN") {
    //from first intent-filter
} else if (intent?.data?.scheme == "myapp") {
    //from second intent-filter
} else if (intent?.data?.scheme == "file" || intent?.data?.scheme == "content") {
    //from third intent-filter
}

Для получения файла можно использовать File(intent?.data?.path!!) варианты получения полного пути так же оставляю

→ Ссылка