Что такое фильтр намерений для рекламы для получения текста (JSON) из другого приложения?

#android #json #android-intent #intentfilter

#Android #json #android-намерение #intentfilter

Вопрос:

Приложение Trainingpeaks может экспортировать представление тренировки в формате JSON. Я загрузил средство просмотра JSON на Android, и оно работает. Я хочу написать свое собственное приложение, чтобы получить это намерение и что-то с ним сделать. Проблема в том, что мое приложение не распознается как способное получить это намерение. Какую форму должен принимать фильтр намерений? Если я добавлю тег данных в существующий файл манифеста intent-filter, приложение не появится на устройстве. Если я настрою два фильтра намерений, это произойдет, но все комбинации категорий действий и тегов данных, которые я пробовал, не позволяют распознать мое приложение для получения JSON. Я поражен тем, насколько плохо это документировано, и довольно разочарован тем, что прибегаю к методу проб и ошибок. Последнее, что я пробовал, было:

     <activity android:name=".MainActivity">

        <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.SEND"/>

            <category android:name="android.intent.category.DEFAULT"/>

            <data android:mimeType="text/*"/>

        </intent-filter>

    </activity>
  

Комментарии:

1. «Я поражен тем, насколько плохо это документировано» — вы спрашивали разработчиков приложения Trainingpeaks, какую Intent структуру они используют? Или вы проверили Logcat, чтобы определить, какую Intent структуру они используют? Было бы неплохо, если бы разработчики Trainingpeaks задокументировали это, но не все документируют свои API. Другой вариант — использовать приложение, подобное этому, чтобы просмотреть манифест вашего средства просмотра JSON и посмотреть, для чего оно используется <intent-filter> . Например, это может быть ACTION_VIEW вместо ACTION_SEND .

2. Нет. TP не хотят играть. Хотя спасибо за советы. Я нашел эту строку в logcat, которая, я думаю, должна быть ею? 04-20 18:20:51.205 3821 4520 I ActivityManager: START u0 {act=android.intent.action. ПРОСМОТРЕТЬ тип=application/json flg=0x1 cmp=null} из uid 10303 . Я не хочу указывать uid. Что бы вы предложили для конфигурации intent-filter? Еще раз спасибо. Нарисовал.

3. Это работает. ПРОСМОТР и application.json. Я был уверен, что уже пробовал это, но это может быть, когда я добавил эти строки в исходный фильтр намерений, который останавливает установку приложения на устройстве. Я не нашел официальную документацию по Android полезной, кроме как в обзоре концепций sketch. По крайней мере, сейчас это работает, поэтому я должен иметь возможность получить свой json из пакета. Большое спасибо. Нарисовал.

4. ОК. Теперь у меня есть одна пара ключ-значение в пакете. Он имеет тип android.net . Uri $HierarchicalUri. Его значением является содержимое://com.peaksware.trainingpeaks.provider.enteranl_files/TrainingPeaks/2019-04-21. Это URL-адрес для загрузки JSON с их сервера? Я ввел браузер, но он просто говорит, что <uri> не соответствует ни одному документу. Почему?

5. «Это URL-адрес для загрузки JSON с их сервера?» — нет. Uri Начинается с content , а не http с или https . Это от а Uri до а ContentProvider , вероятно FileProvider , используемое их приложением. Используйте ContentResolver и openInputStream() для получения InputStream информации о контенте , идентифицированном Uri .