Странное дублирование значков приложений в закрепленном ярлыке (Android O) - PullRequest
0 голосов
/ 08 ноября 2018

Я создаю закрепленный ярлык значка запуска приложения для устройства Android O (эмулятора или физического устройства) и обнаружил странное поведение. Мой код выглядит так:

@TargetApi(Build.VERSION_CODES.O)
    private void createPinnedShortcut(Context context) {
        ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class);
        if (shortcutManager != null) {
            if (shortcutManager.isRequestPinShortcutSupported()) {
                Intent intent= MainActivity.getLaunchIntent(this);
                intent.setAction(Intent.ACTION_VIEW);

                ShortcutInfo shortcut = new ShortcutInfo.Builder(context, "my_shortcut_id")
                        .setShortLabel(context.getString(R.string.my_app_description))
                        .setLongLabel(context.getString(R.string.my_app_long_description))
                        .setIcon(Icon.createWithResource(context, R.mipmap.my_app_icon))
                        .setIntent(intent)
                        .build();
                shortcutManager.requestPinShortcut(shortcut, null);
            } else
                Toast.makeText(context, "Pinned shortcuts are not supported!", Toast.LENGTH_SHORT).show();
        }
    }

Все работает, но значок запуска на главном экране дублируется:

app launcher icon

Обычная иконка есть, но в правом нижнем углу помещена еще одна копия иконы (примерно на 30-40% меньше).

Мои ресурсы значков находятся в res/mipmap-*dpi* папках

Есть подсказки, подсказки?

Обновление

Ответы на комментарии:

1) AndroidManifest под ./build/manifests/debug выглядит так:

    <activity
        android:name="ru.ivanovpv.cellboxkeeper.android.MainActivity"
        android:exported="true"
        android:label="@string/cellboxkeeper"
        android:theme="@style/DefaultActivityTheme.Light"
        android:windowSoftInputMode="adjustResize" >
        <layout
            android:defaultHeight="800dp"
            android:defaultWidth="480dp"
            android:gravity="top|end"
            android:minHeight="320dp"
            android:minWidth="240dp" />

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter> <!-- handle cbx files -->
        <intent-filter
            android:icon="@mipmap/cellboxkeeper"
            android:label="@string/cellboxkeeper"
            android:logo="@mipmap/cellboxkeeper" >
            <action android:name="android.intent.action.VIEW" />

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

            <data
                android:host="*"
                android:mimeType="*/*"
                android:pathPattern=".*\\.cbx"
                android:scheme="content" />
        </intent-filter> 
        <!-- receive files from android share intent -->
        <intent-filter
            android:icon="@mipmap/cellboxkeeper"
            android:label="@string/addToCellboxKeeper" >
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <data android:mimeType="*/*" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

2) Нет такой папки, как: mipmap-*-v26. Вот скриншот папок в реальном apk. Все значки в папках нормальные (без дублирования).

folders

Любые другие версии?

1 Ответ

0 голосов
/ 13 ноября 2018

Я нашел решение, ключ - это атрибут android:logo:

<intent-filter
        android:icon="@mipmap/cellboxkeeper"
        android:label="@string/cellboxkeeper"
        android:logo="@mipmap/cellboxkeeper" >
        <action android:name="android.intent.action.VIEW" />

Удаление строки с android:logo устраняет проблему дублирования.

Надеюсь, кто-то и иногда будет использовать и понимать, что происходит на

...