在静态快捷方式中实施Share App Facility

时间:2019-02-17 14:12:39

标签: android android-intent share shortcut android-static-shortcuts

我试图在Android(如iOS平台)中将“ Share App”功能实现为“应用程序快捷方式”。即使未打开应用程序,此功能也必须在安装后立即存在。我想知道如何在快捷方式xml文件中使用此意图:

Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_TEXT, "https://www.example.com");
        intent.setType("text/plain");

1 个答案:

答案 0 :(得分:0)

我找不到任何方法将type的意图属性放在xml中。 但似乎具有不可见主题的活动可以模拟我想要的内容。

documentation说:

  

从另一个活动开始

     

静态快捷方式不能具有自定义意图标志。第一个意图   静态快捷方式将始终具有Intent.FLAG_ACTIVITY_NEW_TASK和   Intent.FLAG_ACTIVITY_CLEAR_TASK设置。这意味着,当应用程序是   已经运行,您的应用程序中的所有现有活动均被销毁   当启动静态快捷方式时。如果不希望这种行为,   您可以使用蹦床活动或不可见活动   在Activity.onCreate(Bundle)中启动另一个活动,然后调用   Activity.finish():

     

在AndroidManifest.xml文件中,蹦床活动应   包括属性分配android:taskAffinity =“”。在里面   快捷方式资源文件,静态快捷方式中的意图   参考蹦床活动。有关更多信息   蹦床活动,请阅读从另一活动开始。

我们可以将android:taskAffinity=""添加到manifest文件中的InvisibleActivity中,以防止单击主页按钮时该应用程序进入后台。

这是我在AndroidManifest.xml

中进行的不可见活动设置
<activity
    android:name=".InvisibleActivity"
    android:excludeFromRecents="true"
    android:taskAffinity=""
    android:noHistory="true"
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

这是我不可见活动中的整个onCreate()方法:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "https://www.example.com");
    sendIntent.setType("text/plain");
    startActivity(sendIntent);
    finish();
}

最后这是我的静态快捷方式xml文件:

<shortcut
    android:enabled="true"
    android:shortcutId="share_app_shortcut"
    android:icon="@drawable/ic_share"
    android:shortcutShortLabel="@string/shortcut_share_description">

    <intent
        android:action="android.intent.action.VIEW"
        android:targetClass=".InvisibleActivity"
        android:targetPackage="com.example.shortcut">
    </intent>

</shortcut>