InfoWindow点击带有新Google Maps API v2的标记后,我正在尝试制作自定义.我希望它看起来像谷歌的原始地图应用程序.像这样:

当我在ImageButton里面时,它不起作用 - 整个InfoWindow选择而不仅仅是ImageButton.我读到这是因为它View本身没有,但它是快照,所以不能区分各个项目.
正如上一节关于信息窗口中所提到的,信息窗口不是实时视图,而是视图在地图上呈现为图像.因此,您在视图上设置的任何侦听器都将被忽略,并且您无法区分视图各个部分上的单击事件.建议您不要在自定义信息窗口中放置交互式组件(如按钮,复选框或文本输入).
但如果谷歌使用它,必须有一些方法来实现它.有谁有想法吗?
根据Google开发人员在我的应用中实施Firebase的说明,我注意到android lint抱怨.
我们的想法是,我们必须实现两个从Firebase服务继承的服务:
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { ... }
public class MyFirebaseMessagingService extends FirebaseMessagingService { ... }
Run Code Online (Sandbox Code Playgroud)
然后在清单中注册这些服务.但是,它并不完美.特别是,这两个推荐的AndroidManifest.xml服务条目不包含任何特殊权限:
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
所以linter说:
导出的服务(设置为exported = true或包含intent-filter且未指定exported = false的服务)应定义实体必须具有的权限才能启动服务或绑定到该服务.没有这个,任何应用程序都可以使用此服务.
我应该只将此属性添加到每个服务标记并完成它
tools:ignore="ExportedService"
Run Code Online (Sandbox Code Playgroud)
或者在这种情况下有更好的方法吗?我的意思是,公开这些特定的Firebase派生服务是否安全?
android android-service android-lint firebase firebase-cloud-messaging
我之前在这里发布了一个有关如何获取我的APK签名校验和的问题: 如何获取我的APK签名校验和?
如果应用是使用v1签名方案或v1 / v2组合签名方案签名的,则答案是完美的。(Jar和Full APK签名)
但是,由于我的应用只能在Android O或更高版本上运行(这是特定于设备的应用),因此我将仅使用APK签名方案v2(v2方案)对其进行签名。
我将使用EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM。有关详情,请参见:https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html。
如何获得我的应用程序的APK(v2)签名校验和,可在我的键/值对中用于NFC设置设备所有者应用程序?
android provisioning device-policy-manager device-owner android-for-work
阅读Android的新架构组件,建议使用各种ViewModel实例将数据提供给Activities和Fragments.
还有一种从单个持久模型驱动数据的概念:
第二个重要原则是您应该从模型驱动UI,最好是持久模型.持久性是理想的两个原因:如果操作系统破坏您的应用程序以释放资源,您的用户将不会丢失数据,即使网络连接不稳定或未连接,您的应用程序也将继续工作.模型是负责处理应用程序数据的组件.它们独立于应用程序中的视图和应用程序组件,因此它们与这些组件的生命周期问题隔离开来.
一个类似的单一事实来源的概念:
在此模型中,数据库充当单一事实来源,应用程序的其他部分通过存储库访问它.无论您是否使用磁盘缓存,我们都建议您的存储库将数据源指定为应用程序其余部分的唯一真实来源.
在我看过的代码示例中,它们确实将savedInstanceState包传递给超类的实现,例如:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String userId = getArguments().getString(UID_KEY);
viewModel = ViewModelProviders.of(this).get(UserProfileViewModel.class);
viewModel.init(userId);
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎我们的活动没有理由将任何重要值显式存储/保存到savedInstanceState中.
savedInstanceState与新架构无关吗?
android ×4
android-architecture-components ×1
android-lint ×1
device-owner ×1
firebase ×1
google-maps ×1
infowindow ×1
provisioning ×1