2

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

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

1 回答 1

0

我没有找到任何方法将type意图的属性放入xml. 但似乎一个具有隐形主题的活动可以模拟我想要的。

正如文件所说:

从另一项活动开始

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

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

我们可以android:taskAffinity=""在文件中添加 InvisibleActivitymanifest以防止应用程序在单击主页按钮时进入后台。

这是我的隐形活动设置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>
于 2019-03-04T10:44:03.170 回答