小编Rah*_*aur的帖子

在我的手机上运行的网络安全策略不允许 CLEARTEXT 通信

我正在构建一个应用程序,并且在我朋友的手机上面临网络安全策略错误不允许的 CLEARTEXT 通信(我只是在另一个手机上测试它)。当然我无法追踪问题,因为应用程序在我的手机上运行正常(没有 USB 调试),我从谷歌播放下载它。

我通过添加android:usesCleartextTraffic="true"到应用程序标签来解决这个问题, AndroidManifest.xml 我还添加了 android:networkSecurityConfig="@xml/network_security_config"

我的配置 XML:

<?xml version="1.0" encoding="utf-8"?>
  <network-security-config>
      <domain-config cleartextTrafficPermitted="true">
      <domain includeSubdomains="true">MY IP</domain>
  </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作。我无法在我的手机上追踪问题,因为它可以工作。为什么我没有收到和我朋友手机一样的错误???

我希望它在我的手机上给我同样的错误,以便能够追踪问题。我删除了上述所有选项,但它仍然可以在我的手机上运行。在我添加任何东西之前它甚至可以工作,因为我只是在我朋友的手机上安装后才发现问题。

android http android-security cleartext

26
推荐指数
2
解决办法
3万
查看次数

无法使用 ProjectExecutionServices 创建 TaskExecuter 类型的服务

Android Studio 3.6.1 Gradle 版本 5.6.4

Gradle 构建错误

无法创建类型为TaskExecuterusing 的服务,因为类型的ProjectExecutionServices.createTaskExecuter()参数 #22 存在问题ReservedFileSystemLocationRegistry

Cannot create service of type ReservedFileSystemLocationRegistry using ProjectExecutionServices.createReservedFileLocationRegistry() as there is a problem with parameter #1 of type List<ReservedFileSystemLocation>.
Run Code Online (Sandbox Code Playgroud)

java android gradle

7
推荐指数
5
解决办法
8609
查看次数

Gson 无法解析日期

在我的应用程序中的一些用户抛出致命异常:com.google.gson.JsonSyntaxException。我使用 gson 将数据写入和读取到磁盘 LRU 缓存。当我从缓存中读取数据时,我如何理解此异常发生。

这就是我创建 json 实例的方式:

Gson gson = new Gson();
Run Code Online (Sandbox Code Playgroud)

此异常发生在 Android 5、6、7、8 中。这是 Crashlytics 的统计数据。

这是来自 Crashlytics 的异常堆栈跟踪:

Fatal Exception: com.google.gson.JsonSyntaxException: Nov 5, 2019 20:18:24
       at com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate(DateTypeAdapter.java:87)
       at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:75)
       at com.google.gson.internal.bind.DateTypeAdapter.read(DateTypeAdapter.java:46)
       at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
       at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
       at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
       at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
       at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
       at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
       at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
       at com.google.gson.Gson.fromJson(Gson.java:927)
       at com.google.gson.Gson.fromJson(Gson.java:892)
       at com.google.gson.Gson.fromJson(Gson.java:841)
       at com.google.gson.Gson.fromJson(Gson.java:813)
       at com.example.data.repository.MbCacheImpl.getDashboard(MbCacheImpl.java:44)
       at com.example.data.repository.DataRepository.getDashboard(DataRepository.java:64)
       at com.example.ui.main.main.TabMainViewModel.loadDashboard(TabMainViewModel.java:289)
       at com.example.ui.main.main.TabMainViewModel.loadData(TabMainViewModel.java:260)
       at com.example.ui.base.BaseDataViewModel$onAttach$1.onAvailable(BaseDataViewModel.java:124)
       at android.net.ConnectivityManager$CallbackHandler.handleMessage(ConnectivityManager.java:3108)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:154)
       at android.os.HandlerThread.run(HandlerThread.java:61)

Caused by java.text.ParseException: Failed to …
Run Code Online (Sandbox Code Playgroud)

android gson

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

关于如何在服务器上验证 Google In App Purchase 购买令牌的说明?

鉴于我的服务器端点已收到与 Google In App Billing 购买相关的购买令牌,我该如何以编程方式对其进行验证并获得对其内容的访问权限?

我已经可以使用以下方法验证 Google登录令牌php

$client = new Google_Client(['client_id' => $client_id]);

$payload = $client->verifyIdToken($token);

if ($payload)
    return $payload['sub'];
Run Code Online (Sandbox Code Playgroud)

但是我将如何使用Google_Client来验证购买令牌并访问其内容。

它真的只是GET下面的 Ruby 示例一样将 a 发送到 Google 服务器的情况吗?

或者他们是Google_Client我应该调用的特定命令?

我开始认为这是在php使用中复制提到的 Ruby 代码OAuth2或其他东西的情况,因为 Google Docs 确实说一旦服务器拥有购买令牌:

使用 Google Play Developer API 的 Subscriptions 和 In-App Purchases 部分执行 GET 请求以从 Google Play 检索购买详细信息(Purchases.products 用于一次性产品购买或 Purchases.subscriptions 用于订阅)。GET 请求包括应用程序包名称、产品 ID 和令牌(购买令牌)。

如果可能的话只是想澄清一下?谢谢。

google-api-php-client android-inapp-purchase

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

如何限制 WorkManager 中并行运行的工作线程数量?

我将文件(由用户选择)排队上传,然后使用 WorkManager 更新同步状态,如下所示:

fun schedule(files: List<String>) {
    var cont = workManager
                .beginUniqueWork(issueId, APPEND, files.map { workRequest(it) })
                .then(updateSyncStatusWork)
                .enqueue()
}
Run Code Online (Sandbox Code Playgroud)

效果很好。但是,当用户选择大量文件并查看日志时,我发现很多文件正在同时上传(大约 10 个甚至全部)。并且发生了很多超时。我相信减少并行上传数量会减少超时次数,但我在 WorkManager 或 WorkRequest 中找不到任何允许这样做的 API。

PS 我不考虑链接它们,因为上传失败会删除其后所有文件的上传。

android android-workmanager

3
推荐指数
1
解决办法
2253
查看次数

android:textAllCaps=“false”不适用于 com.google.android.material.tabs.TabLayout

我在 com.google.android.material.tabs.TabItem 中设置了 android:textAllCaps="false" ,认为它仅显示全部大写的选项卡标题。

如何删除所有大写字母?

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <com.google.android.material.tabs.TabItem
        android:id="@+id/TabWeekly"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="@string/Weekly"
        android:textAllCaps="false"
        android:theme="@style/CustomTextAppearanceTab" />

    <com.google.android.material.tabs.TabItem
        android:id="@+id/TabMonthly"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:text="@string/Monthly"
        android:textAllCaps="false"
        android:theme="@style/CustomTextAppearanceTab" />

</com.google.android.material.tabs.TabLayout>
Run Code Online (Sandbox Code Playgroud)

即使我已经为它设定了风格

<style name="CustomTextAppearanceTab" parent="TextAppearance.Design.Tab">
       <item name="textAllCaps">false</item>
       <item name="android:textAllCaps">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但它不起作用

xml android material-design android-tablayout

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