Опция "Поделиться намерением" с помощью ярлыка Android - PullRequest
0 голосов
/ 26 февраля 2019

По умолчанию iOS предоставляет опцию «Поделиться именем приложения» в настройках ярлыков, когда приложение загружается из магазина приложений.

См. Изображение ниже:

enter image description here

При нажатии на нее, открывает цель обмена на самом экране меню телефона , без перенаправления наприложение, где пользователь может поделиться приложением.

enter image description here

Я хочу реализовать это в Android .

Вот то, что я пробовал до сих пор:

<shortcut
        android:shortcutId="share_app"
        android:enabled="true"
        android:icon="@drawable/ic_cart_active"
        android:shortcutShortLabel="@string/shortcut_share"
        android:shortcutLongLabel="@string/shortcut_share">
        <intent
            android:action="android.intent.action.send"
            android:targetPackage="com.example.android.internal"
            android:targetClass="" />
    </shortcut>

Но это не работает, так как я не могу понять, что здесь должно быть targetClass .

РЕДАКТИРОВАТЬ: Ответ Нилеша почти сработал, но единственная проблема, с которой я сейчас сталкиваюсь, заключается в том, что всякий раз, когда я нажимаю на кнопку «Поделиться» в ярлыке, активность запуска показывается в мгновение окасекунду, затем появляется средство выбора намерения совместного использования. Теперь, когда я нажимаю кнопку «Домой» с показом параметров общего доступа,нг, приложение уходит в фоновый режим. Этого не должно быть. Есть идеи, как этого избежать.

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете использовать App shortcuts

, но основным недостатком этого параметра является то, что он доступен в Oreo и более поздних версиях Android

Вот пример кода

Создание файла ресурса: res/xml каталог ( Снимок экрана )

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:enabled="true"
        android:icon="@drawable/ic_share"
        android:shortcutDisabledMessage="@string/share_app"
        android:shortcutId="nilu"
        android:shortcutLongLabel="@string/share_app"
        android:shortcutShortLabel="@string/share_app">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="neel.com.demo.ShareActivity"
            android:targetPackage="neel.com.demo" />
        <categories android:name="android.shortcut.conversation" />
    </shortcut>
</shortcuts>

Теперь вам нужно зарегистрировать ярлык в файле манифеста под тегом активности

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="neel.com.demo">

    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.shortcuts"
                android:resource="@xml/shortcuts" />

        </activity>

    </application>

</manifest>

Теперь создайте простую акцию для совместного использования приложения.ссылка

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class ShareActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        Intent sendIntent = new Intent();
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT,
                "Hey check out my app at: https://play.google.com/store/apps/details?id=neel.com.demo");
        sendIntent.setType("text/plain");
        startActivity(sendIntent);
        finish();
    }
}

ВЫХОД

При длительном нажатии на значок приложения ваш ярлык будет отображаться, как показано на рисунке ниже

enter image description here

после нажатия ярлыка

enter image description here

ОБНОВЛЕНИЕ использование android:excludeFromRecents="true" в вашем ShareActivity

<application
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".MainActivity" />

    <activity
        android:name=".ShareActivity"
        android:excludeFromRecents="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <meta-data
            android:name="android.app.shortcuts"
            android:resource="@xml/shortcuts" />

    </activity>

</application>
0 голосов
/ 28 февраля 2019

Существует два способа создания ярлыка.

one: создание статических ярлыков. В файле манифеста вашего приложения (AndroidManifest.xml) найдите действие, для фильтров намерений которого установлено значениедействие android.intent.action.MAIN и категория android.intent.category.LAUNCHER.а затем добавьте в это действие элемент, который ссылается на файл ресурса, в котором определены ярлыки приложения:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.myapplication">
<application ... >
<activity android:name="Main">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>

  <meta-data android:name="android.app.shortcuts"
             android:resource="@xml/shortcuts" /> 
</activity>

...

two : создание динамических ярлыков, которые выможно использовать код, чтобы сделать это, API-интерфейс ShortcutManager позволяет выполнять следующие операции с динамическими ярлыками:

ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);

ShortcutInfo shortcut = new ShortcutInfo.Builder(context, "id1")
.setShortLabel("Website")
.setLongLabel("Open the website")
.setIcon(Icon.createWithResource(context, R.drawable.icon_website))
.setIntent(new Intent(Intent.ACTION_VIEW,
               Uri.parse("https://www.mysite.example.com/")))
.build();

shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));

Для получения дополнительной информации, вы можете через официальный сайт , как создать ярлык в Android?

...