小编Viz*_*har的帖子

使用GSON反序列化通用类型

我在Android应用程序中实现Json反序列化时遇到一些问题(使用Gson库)

我上过这样的课

public class MyJson<T>{
    public List<T> posts;
}
Run Code Online (Sandbox Code Playgroud)

反序列化调用是:

public class JsonDownloader<T> extends AsyncTask<Void, Void, MyJson<T>> {
...
protected MyJson<T> doInBackground(Void... params) {
  ...
    Reader reader = new InputStreamReader(content);
    GsonBuilder gson = new GsonBuilder();
    Type collectionType = new TypeToken<MyJson<T>>() {}.getType();
    result = gson.create().fromJson(reader, collectionType);
  ...
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是调用后的result.posts列表包含一个LinkedTreeMap对象数组(具有正确的值,因此问题是反序列化)而不是MyJson对象.当我使用MyObject而不是T时,一切正常,MyObject正确.

那么有没有办法在不创建自定义反序列化器的情况下实现反序列化调用?

java android json gson deserialization

46
推荐指数
3
解决办法
6万
查看次数

Android - Firebase Crashlytics - “无法检索设置”

我无法让 Firebase 崩溃报告将日志发送到 firebase(在 firebase 控制台中看不到任何崩溃)

我发现以前我在 Fabric Crashlytics 中创建了项目并今天将其删除

据我所知,我已经正确配置了我的 android 项目。所以也许我只是在 firebase 控制台中遗漏了一些东西。代码编译成功Fabric.isInitialized() == true

项目 -> build.gradle

   classpath 'com.google.gms:google-services:4.2.0'
   classpath 'io.fabric.tools:gradle:1.28.1'
Run Code Online (Sandbox Code Playgroud)

应用程序-> build.gradle

implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'

apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)

没有<meta-data>在清单并没有Fabric.withApplication。如此清晰的配置。然而,项目本身非常庞大。

使用Crashlytics.getInstance().crash()此调用崩溃后,使用控制台在控制台中输出adb logcat -s Fabric CrashlyticsCore

I CrashlyticsCore: Initializing Crashlytics 2.6.8.32
E Fabric  : Failed to retrieve settings from https://settings.crashlytics.com/spi/v2/platforms/android/apps/*******/settings
W CrashlyticsCore: Received null settings, skipping report submission!
Run Code Online (Sandbox Code Playgroud)

所以主要问题可能是我没有收到设置并且不知道这意味着什么

android firebase crashlytics

9
推荐指数
1
解决办法
7950
查看次数

Android Drive API startResolutionForResult返回RESULT_CANCELLED

我正在尝试将Google云端硬盘应用到我的Android应用中,我甚至无法连接到Api客户端.我不知道为什么:

  1. 我在开发人员控制台中为〜/ .android/debug.keystore配置了项目和凭据(值似乎是正确的)
  2. 我有来自Drive for Android Documentation的复制粘贴代码- >在方法中onConnectionFailed()我正在调用connectionResult.startResolutionForResult()ifconnectionResult.hasResolution()
  3. onActivityResult匹配requestCode我收到resultCode == 0(RESULT_CANCELLED),即使我选择我的帐户

你知道为什么吗?我还尝试添加:

<meta-data
    android:name="com.google.android.apps.drive.APP_ID"
    android:value="----"/>
Run Code Online (Sandbox Code Playgroud)

在文档页面上没有提到但在某些SO帖子上没有提到的Manifest.

感谢帮助

编辑:

我也试过用 enableAutoManage

mGoogleApiClient = new GoogleApiClient.Builder(this)
        .enableAutoManage(this, this)
        .addApi(Drive.API)
        .addScope(Drive.SCOPE_FILE)
        .build();
Run Code Online (Sandbox Code Playgroud)

而不是manualy配置连接和connectionFailed回调:

        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
Run Code Online (Sandbox Code Playgroud)

它在onConnectionFailed方法中返回错误代码13 .基于文档似乎,这在以下情况下返回:

当用户选择不完成提供的解析时,OnConnectionFailedListener传递给enableAutoManage(FragmentActivity,GoogleApiClient.OnConnectionFailedListener).例如,通过取消对话框.

但我没有取消它.

我在Nexus 5x上测试它 - Android N.

android drive

6
推荐指数
1
解决办法
1216
查看次数

Android - 视图标记在视图上不正确:null(CursorAdapter和DataBinding)

所以昨天我终于找到了一些时间来尝试新的DataBinding库.我曾尝试将它与CursorAdapter一起使用,但没有成功.

正如Androidguys在其页面上所写:

如果您在ListView或RecyclerView适配器中使用数据绑定项,您可能更喜欢使用:

ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false);
//or
ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);
Run Code Online (Sandbox Code Playgroud)

但是在CursorAdapter中我必须将Inflating和Binding分成两种方法.那么如何正确实现呢?大多数情况下我得到一个异常:视图标签在视图上不正确:null

private class BookCursorAdapter extends CursorAdapter {

    public BookCursorAdapter(Context context) {
        super(context, null, 0);
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        BookListItemBinding binding = DataBindingUtil.inflate(getLayoutInflater(), R.layout.book_list_item, parent, false);
        return binding.getRoot();

        // or just
        // return getLayoutInflater().inflate(R.layout.book_list_item, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        // here it fails (and i cannot see source code …
Run Code Online (Sandbox Code Playgroud)

data-binding android listview

5
推荐指数
1
解决办法
3599
查看次数

具有 CharSequence/String 替换功能的 Kotlin 和 Android TextWatcher

我只是在我的项目中使用 Kotlin,遇到了奇怪的问题...当尝试转换自定义EditTextAndroid studio 时停止响应。当我尝试将其部分转换时,它在转换这段代码时停止响应:

private TextWatcher editor = new TextWatcher() {

    long newMicro = 0;

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        s = s.toString().replace(".", "")
                .replace(",", "")
                .replace("$", "");

        try {
            newMicro = Long.parseLong(s.toString());
        } catch (Exception e) {
            newMicro = 0;
        }
    }

    @Override
    public void afterTextChanged(Editable editable) {
        removeTextChangedListener(editor);
        setMicroUnits(newMicro);
        addTextChangedListener(editor);
    }
};
Run Code Online (Sandbox Code Playgroud)

你有过这样的行为经历吗?我无法TextWatcher在 Kotlin …

android kotlin

5
推荐指数
1
解决办法
7627
查看次数

从Firebase崩溃报告中获取原始堆栈跟踪

最近我发布了一个已发布的混淆的Android应用程序,启用了firebase崩溃报告.应用程序崩溃,因为我没有上传映射文件,我无法正确读取堆栈跟踪.

所以我想下载堆栈跟踪并手动反混淆它 /retrace.sh -verbose mapping.txt ~/trace.txt

但是我无法获得堆栈跟踪的原始形式......

所以我有两个问题:

  1. 如何从其网站上的firebase崩溃报告选项卡获取原始表单?
  2. 如何在将应用程序发布到Play商店之前上传映射文件?

android firebase firebase-crash-reporting

4
推荐指数
1
解决办法
1013
查看次数

Firebase 与 Facebook 应用的动态链接

我目前正在尝试使用 Firebase 动态链接(深层链接)。应用程序的核心应在社交媒体上共享链接。

我已成功创建短链接(200 OK),并将链接共享到 G+ 和 Facebook。但有一个问题

  • 移动浏览器 -> 深层链接 -> 成功重定向
  • G+ 应用 -> 深层链接 -> 成功重定向
  • Facebook 应用程序 -> 深层链接(未安装我的应用程序) -> 安装 -> 继续 -> 成功
  • Facebook 应用程序 -> 深层链接(安装了我的应用程序) -> 打开 Playstore 应用程序并显示我的应用程序,而不是运行该应用程序

我正在使用 Android 开发人员网站上建议的 http 方案:

    <activity android:name=".LinkActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" android:host="..."/>
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

那么如何正确使用 Firebase 动态链接与 Facebook 应用程序呢?

android facebook firebase firebase-dynamic-links

2
推荐指数
1
解决办法
4242
查看次数

Dagger 2.10 - ContributesAndroidInjector注释

我刚刚dagger.android按照文档实现了.写在那里的第一个不正确的东西HasActivityInjector是容易被替换的存在HasDispatchingActivityInjector.

另外提到的是@ContributesAndroidInjector注释的使用应该简化源代码创建...但是我找不到这样的注释既不通过Android工作室自动完成也不能在他们的JavaDoc和文档中的链接重定向到404网站.我该如何使用注释?或者我可以吗?

编辑:我正在使用

compile "com.google.dagger:dagger:$rootProject.daggerVersion"
compile "com.google.dagger:dagger-android:$rootProject.daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$rootProject.daggerVersion"
annotationProcessor "com.google.dagger:dagger-android-processor:$rootProject.daggerVersion"
Run Code Online (Sandbox Code Playgroud)

哪里 daggerVersion = '2.10'

android dagger-2

2
推荐指数
1
解决办法
1083
查看次数

它会泄漏吗?自定义单例中的FirebaseAnalytics.getInstance

我还是完全不明白内存泄漏.我用static方法创建了自定义单例:

public static AnalyticsHelper getInstance(Context context) {
    return analyticsHelper == null ?
            analyticsHelper = new AnalyticsHelper(FirebaseAnalytics.getInstance(context)) :
            analyticsHelper;
}
Run Code Online (Sandbox Code Playgroud)

我想知道如果我实例化它是否会发生内存(活动)泄漏Activity.我不确定,因为其他Firebase工具在实例化时起作用ContentProvider和不需要Context.官方文件对我没有帮助.

android memory-leaks firebase firebase-analytics

2
推荐指数
1
解决办法
805
查看次数