gpt4 book ai didi

android - 在静态快捷方式中实现共享应用工具

转载 作者:行者123 更新时间:2023-11-29 02:22:13 25 4
gpt4 key购买 nike

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

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

最佳答案

我没有找到任何方法来将 Intent 的 type 属性放入 xml 中。但似乎一个无形主题的 Activity 可以模拟我想要的。

作为documentation说:

Start one activity from another

Static shortcuts cannot have custom intent flags. The first intent of a static shortcut will always have Intent.FLAG_ACTIVITY_NEW_TASK and Intent.FLAG_ACTIVITY_CLEAR_TASK set. This means, when the app is already running, all the existing activities in your app are destroyed when a static shortcut is launched. If this behavior is not desirable, you can use a trampoline activity, or an invisible activity that starts another activity in Activity.onCreate(Bundle), then calls Activity.finish():

In the AndroidManifest.xml file, the trampoline activity should include the attribute assignment android:taskAffinity="". In the shortcuts resource file, the intent within the static shortcut should reference the trampoline activity. For more information about trampoline activities, read Start one activity from another.

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

这是我在 AndroidManifest.xml 中设置的隐形 Activity

<activity
android:name=".InvisibleActivity"
android:excludeFromRecents="true"
android:taskAffinity=""
android:noHistory="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

这是我不可见 Activity 中的整个 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>

关于android - 在静态快捷方式中实现共享应用工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54734091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com