Android - додавання принаймні однієї активності за допомогою фільтра намірів ACTION-VIEW після оновлення SDK версії 23


305

Я отримую таку підказку інструменту в AndroidManifest.xml :

Додаток не підлягає індексуванню Пошуком Google; розглянути можливість додавання хоча б однієї активності за допомогою наповнювача намірів ACTION-VIEW. Докладнішу інформацію див. У поясненні випуску.

Додає глибокі посилання, щоб перетворити вашу програму в індекс Google, отримати встановлення та трафік до вашої програми з Пошуку Google.

введіть тут опис зображення

Хтось може пояснити, чому це так?


Для того, щоб побачити його в дії, дивіться тут: stackoverflow.com/questions/56631387 / ...
user1506104

Відповіді:


239

З офіційної документації:

Щоб дозволити Google сканувати вміст вашої програми та дозволити користувачам вводити ваш додаток із результатів пошуку, ви повинні додати фільтри намірів для відповідних дій у маніфесті програми. Ці фільтри намірів дозволяють глибоко посилатися на вміст у будь-якій вашій діяльності. Наприклад, користувач може натиснути на глибоке посилання, щоб переглянути сторінку в торговому додатку, яка описує пропозицію товару, який користувач шукає.

Використовуючи це посилання Увімкнення глибоких посилань для вмісту додатків, ви побачите, як ним користуватися.

І за допомогою цього тестуйте реалізацію індексування додатків, як перевірити це.

Наступний фрагмент XML показує, як ви можете вказати фільтр намірів у своєму маніфесті для глибокого посилання.

<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_title_viewgizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/gizmos" />
        <!-- note that the leading "/" is required for pathPrefix-->
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example"
              android:host="gizmos" />

    </intent-filter>
</activity>

Для тестування через Android Debug Bridge

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d <URI> <PACKAGE>

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d "example://gizmos" com.example.android

5
@ user25 схема - схема урі, схема може бути http, https, ftp тощо
Bhargav

89
ну все це для конкретних додатків, тоді навіщо показувати це попередження? не всі програми потребують цього, не всі додатки є веб-переглядом деяких сайтів. Google так дратує ..
user924

64
Його можна будь-коли придушити інструментами: ignore = "GoogleAppIndexingWarning"
ecle

12
Цікаво, що попередження говорить, що вам потрібен ACTION-VIEWфільтр намірів, але рішення включає в себе action.VIEW. Так само, перейшовши за посиланням в Android Studio, ви перейдете на веб-сторінку, де ACTION-VIEWвона не відображається. Найменше, що вони могли зробити з нав'язливими попередженнями, - це точні повідомлення та сторінки довідки.
Джон Перрі

7
@ecle Де можна поставити цю опцію? / Не звертай уваги; Я знайшов це: треба додати xmlns:tools="http://schemas.android.com/tools"до manifestтегу, а потім tools:ignore...до applicationтегу.
Джон Перрі

190

Ви можете видалити попередження, додавши наведений нижче код <intent-filter>всередину<activity>

<action android:name="android.intent.action.VIEW" />

6
Ця робота для мене. Я думаю, це відповідь на те, що я шукаю.
Махмудур Рахман

13
Це здається правильним рішенням, якщо ви не хочете активувати індексацію додатків. Замість того, щоб просто видалити попередження через tools:ignore="GoogleAppIndexingWarning". Я додав його як рідного брата <action android:name="android.intent.action.MAIN" />в основній діяльності.
Даніель Ф

4
але навіщо нам потрібен цей рядок у коді сліпо? якась конкретна причина?
Ghanshyam Nayma

15
@GhanshyamNayma додавши цей рядок, просто видаляє попередження. Без додаткового коду, необхідного для додавання фактичної індексації додатків. Не зовсім найкраща практика, але я розумію, що попередження дратують. Я б просто tools:ignore="GoogleAppIndexingWarning"замість цього перейшов, оскільки тоді ви не додасте порожній ACTION_VIEW. Це може не спричинити жодних проблем, але ви завжди хочете бути в безпеці.
Карсон Дж.

8
так ось ЦЕ чому зараз ACTION_VIEW з'являється стільки випадкових додатків ... eesh
CCJ

135
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app"
tools:ignore="GoogleAppIndexingWarning">

Ви можете видалити попередження, додавши xmlns:tools="http://schemas.android.com/tools"і tools:ignore="GoogleAppIndexingWarning"до <manifest>тегу.


3
Це працює для мене, і саме таке рішення я шукав.
Саян Сіл

Це ідеальне рішення.
Рудра

4
Це не ідеальне рішення, оскільки воно не дозволить Google індексувати додаток. Ігноруючи щось, вам слід спробувати подолати це питання.
Пратік Бутані

@PratikButaniAndroidDev Індексація в AppStore не є пріоритетною для багатьох розробників, в основному, як починає розробляти додаток ..
Maher Abuthraa

25

Додавання цього фільтра намірів до однієї з дій, заявлених у маніфесті програми, зафіксувала це для мене.

<activity
    android:name=".MyActivity"
    android:screenOrientation="portrait"
    android:label="@string/app_name">

    <intent-filter>

       <action android:name="android.intent.action.VIEW" />

    </intent-filter>

</activity>

У мене це є, але з intent.action.MAIN, і воно не пішло.
C. Skjerdal

Вам потрібно переконатися, що він встановлений на android.intent.action.VIEW
Oladipo Olasemo

1

це рішення працює лише. Якщо ви хочете проігнорувати це Попередження

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="GoogleAppIndexingWarning"
    package="com.example.saloononlinesolution">
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.