简单问题:
我在Android 3.0应用程序中使用PICK_CONTACT
。
问题是联系人应用程序有一个轻量级主题,而我的应用程序使用黑暗主题。
所以问题是:
使用startActivity()
时有没有办法设置样式/主题?
如果我正在创建自己的库,并且我希望用户能够使用自定义样式,我需要在intent
中收到一些内容?有没有更好的方法来解决这个问题?
答案 0 :(得分:4)
使用startActivity()时有没有办法设置样式/主题?
没有。您没有权利使用其他应用程序的用户界面,除此之外他们还有权利与您的用户界面混淆。
对于PICK_CONTACT
,如果您愿意获得READ_CONTACTS
权限,则无法阻止您编写自己的联系人选择器活动,主题如您所愿。
如果我正在创建自己的库,并且我希望用户能够使用自定义样式,我需要在意图中接收一些内容吗?
由于没有setStyle()
方法,动态更改活动的样式似乎很麻烦。
如果您的库将作为Android库项目提供,您可以为开发人员提供主题资源和指导,这些开发人员在将活动添加到其清单时可以选择在编译时使用哪个主题。
答案 1 :(得分:3)
没有
一般来说,没有标准的方法来指定一个Activity应该启动的主题/样式:你的想法(在Intent中放置一些东西)实际上是一种很好的方法,但是它再一次不是标准的。
漫游标准的通讯录应用来源(https://android.googlesource.com/platform/packages/apps/Contacts
)无法在PICK_CONTACT
将调用的任何Activity类中指定主题。
您最好的选择是构建自定义联系人选择器并使用内容提供商。你需要要求权限,这会有点麻烦,但这似乎是获得你想要的唯一方法。