我开发了一个读取配置文件的 Android 应用程序。
现在,我想使用另一个文件配置加载我的应用程序。
事实上,我想为我的应用程序创建 2 个快捷方式:
是否可以?
如果是,如何获取我的代码中的参数?
感谢您的帮助
这在 Android 7.1 Nougat API 级别 25 或更高级别上很容易做到。
有一个专用的快捷方式 API,可让您定义活动的快捷方式,并在特定Intent位置添加额外内容,如下所示:
<intent
android:action="android.intent.action.LAUNCH_WITH_CONFIG"
android:targetPackage="com.example.myapplication"
android:targetClass="com.example.myapplication.ComposeActivity" >
<extra android:name="configFile" android:value="filepathconfig1" />
</intent>
Run Code Online (Sandbox Code Playgroud)
上面的代码基于此处的示例。
根据评论进行编辑:您还可以按照此处 所述动态添加和删除快捷方式。如果您想以用户身份更改快捷方式而不需要重新编译,您将需要应用程序中的一些 UI 来管理快捷方式。
要访问代码中的额外内容,只需在活动类中执行以下操作:
String configPath = getIntent().getStringExtra("configFile");
Run Code Online (Sandbox Code Playgroud)
然而,如果您需要支持 7.1 之前的 Android 版本,那就会变得更加复杂。
我可以想到两个选项:第一个是使用<activity-alias> ,如此处所述。
但请注意,该问题的作者指出,不能保证它适用于所有设备。
另一种选择是创建两个虚拟启动器活动,它们是不可见的,并且finish()在使用正确的参数启动真正的主活动后立即启动。
在我看来,这是最丑陋的黑客,但也是解决这个问题的最可靠和最普遍的黑客。
在清单中,将活动主题设置为android:theme="@android:style/Theme.Translucent.NoTitleBar"
在此活动中onCreate添加如下代码:
Intent i = new Intent(this, RealMainActivity.class);
i.puStringExtra("configFile", "filepathconfig1");
startActivity(i);
finish();
Run Code Online (Sandbox Code Playgroud)
我从你的评论中看到,你希望它能够动态工作,而不需要重新编译 APK,但 Android 启动器不支持这样的功能。至少,我从未听说过有这样的人。
不过,创建这样的启动器是可能的。
目前使用动态参数启动 Activity 的唯一方法是通过 adb:
adb shell am start com.myactivity --es configFile configFilePath
有关更多详细信息,请阅读此内容。
| 归档时间: |
|
| 查看次数: |
9972 次 |
| 最近记录: |