我试图在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");
答案 0 :(得分:0)
我找不到任何方法将type
的意图属性放在xml
中。
但似乎具有不可见主题的活动可以模拟我想要的内容。
从另一个活动开始
静态快捷方式不能具有自定义意图标志。第一个意图 静态快捷方式将始终具有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>