我在Android 2.2设备上的GoogleCloudMessaging.register()调用上收到错误"SERVICE_NOT_AVAILABLE".
我正在编写一个使用新版Google Play服务使用GoogleCloudMessaging的应用.我使用Android网站上提供的指南实现了它,我的源代码包含大量错误检查和处理代码,例如确保安装或更新Google Play服务.GCM注册码还实现了谷歌的指数退避,建议用来处理SERVICE_NOT_AVAILABLE错误.
我已经在各种设备上测试了我的应用程序,包括ICS,JB,Honey Comb甚至2.3.x设备.GCM注册工作,我可以通过GCM向它发送消息.但是在2.2设备上,我在GoogleCloudMessaging.register()调用中不断收到SERVICE_NOT_AVAILABLE错误,即使有指数退避也是如此.
GCM失败的设备确实是三星SGH-I896,手机上有2个谷歌帐户.我已经读过这个错误可能是由错误配置的时间引起的,但是时间设置为自动的.这款手机没有上线,正在运行三星股票ROM.
我也试过重新启动设备以及重新安装Google Play服务而没有运气.任何有关此问题的帮助将不胜感激.
编辑:我尝试使用旧的gcm.jar和GCMRegistrar实现GCM,它最终在设备上工作.但是我几乎不认为这是一个很好的解决方案,因为谷歌已经停止支持这种方法了.
编辑2:看到接受的答案.
android android-2.2-froyo google-cloud-messaging google-play-services service-not-available
我想使用没有嵌套的ConstraintLayout实现下面的布局。
布局需要一个障碍,因为不能保证哪个textview会更高。这也需要一条链,因为一切都需要居中。问题是我找不到使壁垒与壁垒一起工作的方法。
到目前为止,这是我可以正确布局但不会居中的内容:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/topLeftText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
tools:text="Test test test test test test test test test test"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/topRightText"/>
<TextView
android:id="@+id/topRightText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
tools:text="Test test test test test test test test test test test test test test test test test test test test"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/topLeftText"
app:layout_constraintEnd_toEndOf="parent"/>
<android.support.constraint.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="topLeftText,topRightText"
app:barrierDirection="bottom"/>
<TextView
android:id="@+id/bottomText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
tools:text="Test test test test test test test test test test …Run Code Online (Sandbox Code Playgroud) 在我的应用程序的几乎每个 Play 商店版本中,我都会收到奇怪的崩溃报告,指出某些资源文件丢失。反编译APK显示资源在那里。崩溃始终是由 1 台设备上的 1 位用户造成的。
令人费解的是,设备型号名称是“Mainline”,制造商是“Google”。在 Google 上环顾四周,没有型号名称为“Mainline”的设备,但有一个名为“Mainline”的项目。有谁知道导致这些崩溃的原因是什么?谷歌正在进行一些奇怪的测试吗?
我正在玩Android的MediaStore类,当我注意到两个图像内容URI时,我试图创建一个非常简单的照片库应用程序:EXTERNAL_CONTENT_URI和INTERNAL_CONTENT_URI.起初我以为它是指存储的位置(外部SD或内部存储器),但经过一些测试后,情况显然并非如此.我在这里阅读了更多关于它的内容,它似乎表明内部内容uri实际上是设备上每个应用程序内部的内容.但是我并不完全确定并希望更熟悉这些MediaStore课程的更有经验的开发人员提出意见.
所以我的主要问题是,只是查询EXTERNAL_CONTENT_URI是否足以获得所有重要的照片?如果有可能回答,究竟是INTERNAL_CONTENT_URI什么以及它应该用于什么?
我正在尝试构建一个Uri,这是一种意图查询地图上某个位置的最正确的方法.在地图意图的文档中,指出Uris应具有以下形式:geo:0,0?q=my+street+address.我尝试使用Uri.Builder,但没有找到指定"0,0"
uri部分的方法,因为Uri.Builder没有指定路径的函数而没有预先添加'/'.目前我使用以下代码:
uri = new Uri.Builder()
.scheme(URL_SCHEME_MAP)
.encodedOpaquePart("0,0?q=" + query)
.build();
Run Code Online (Sandbox Code Playgroud)
哪个好,但不如我想要的那么好.所以我想知道是否有人知道更好/更好的方法来做到这一点.
由于Kotlin支持函数式编程的许多概念,我想知道是否有办法在Kotlin中部分应用函数?
部分应用程序可能有用的一个这样的例子是:
// In one class
fun doSomething(cb: (a, b) -> Unit) {
<some logic here to compute someField>
doSomethingElse(cb.applyPartially(someField))
}
// In another class
fun doSomethingElse(cb: (b) -> Unit) {
<some logic here to compute someOtherField>
cb(someOtherField)
}
Run Code Online (Sandbox Code Playgroud) 我正在学习RxJava,我注意到很多示例代码isDisposed()在调用之前都会进行检查dispose()。当我呼吁dispose()已经处置的时候,我没有发现任何问题Disposable。
所以我的问题是,我需要isDisposed()支票吗?isDisposed()在处置前是否有应检查的情况?首先进行检查的利弊是什么?
我最近更新到了 AGP 8,并在 Play 商店上发布了更新。我收到一些最近未更改的代码区域发生崩溃的报告。我相当有信心这是由 AGP 8 升级引起的崩溃,特别是在 R8 全模式周围。
崩溃周围的代码正在恢复布局管理器的状态。
恢复代码
if (savedInstanceState != null) {
oldRecyclerLayoutState = savedInstanceState.getParcelableCompat(
SIS_RECYCLER_LAYOUT_STATE,
)
}
Run Code Online (Sandbox Code Playgroud)
保存实例代码
private lateinit var layoutManager: LinearLayoutManager
...
override fun onSaveInstanceState(outState: Bundle) {
outState.putParcelable(SIS_RECYCLER_LAYOUT_STATE, layoutManager.onSaveInstanceState())
super.onSaveInstanceState(outState)
}
Run Code Online (Sandbox Code Playgroud)
Class.isAssignableFrom()崩溃报告表明,读取 Parcelable 会崩溃,因为调用类时其 ifTable 为 null 。从AOSP中,我可以看到 anifTable是一个接口表。我假设isAssignableFrom正在使用 来ifTable确定可分配性,但是由于类为空,它无法读取它。不幸的是,该错误没有告诉我哪个类为空。
完整的堆栈跟踪:
Fatal Exception: java.lang.NullPointerException: Attempt to read from field 'java.lang.Object[] java.lang.Class.ifTable' on a null object reference in method 'boolean java.lang.Class.isAssignableFrom(java.lang.Class)'
at java.lang.Class.isAssignableFrom(Class.java:579)
at …Run Code Online (Sandbox Code Playgroud)