小编Jay*_*ani的帖子

Android Studio图像资产启动器图标透明背景颜色

你可能会想这个问题是一个重复一个.但从那时起,Android Studio已经更新,并且在那里提供的解决方案不再适用.

我想在android studio中使用图像资源设置我的应用程序徽标.这是因为如果我将我的应用程序徽标直接放在drawable或mipmap中,那么会导致许多问题:如果它的大小很大,则会发生应用程序崩溃,如果在oreo上运行的设备然后徽标将不显示并且默认ic_launcher正在显示等.

在尝试使用图片资源设置我的应用程序徽标时,我遇到了一个问题:我无法保持app徽标的背景透明.

我有一个在photoshop中制作的png徽标,我想将其设置为我的应用徽标,我不想要任何背景,但android studio图像资产不提供任何删除背景的选项.我尝试了以下来自谷歌的解决方案:

这个这个

但这些都不适合我.

尝试的解决方案:

  1. 通过将形状设置为无
  2. 通过从它的默认位置删除ic_launcher_background文件
  3. 试过不同的设备

这些都不起作用......请帮助我.任何帮助将不胜感激.

android uiimageasset android-studio-3.1

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

无法解决:androidx.lifecycle:lifecycle-extensions-ktx:2.0.0-alpha1

我正在尝试了解 android 中的 ViewModel 和 LiveData 概念。我正在做一个练习项目,但是当我implementation 'androidx.lifecycle:lifecycle-extensions-ktx:2.0.0-alpha1'在我的应用程序级别的 gradle 文件中添加一行时,它显示了我

无法解决:androidx.lifecycle:lifecycle-extensions-ktx:2.0.0-alpha1。

我在 google 上搜索了解决方案,我找到了这个答案,它在我只编译 viewmodel 库时有效,但如果我使用与 相同的方法编译扩展库implementation group: 'androidx.lifecycle', name:'lifecycle-extensions-ktx', version: '2.0.0-alpha1',它会显示与上面相同的错误。我也试图找到它的Maven仓库网站在这里,但我并没有对如何编译它的任何信息。

更新

应用级 Build.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "***************"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar']) …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-livedata android-viewmodel android-architecture-components

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

Lambda SQS 触发器批处理窗口和批处理大小未按预期工作

我有一个监听第三方 SNS 的 AWS SQS(标准队列)。我有一个 lambda 设置,其中具有批量大小 10000 和批量窗口 300 的 SQS 触发器。我的 SQS 接收大约。一次 150 条消息,但即使我配置了批量大小 10000,lambda 也会一次触发 20-30 条消息。我不明白为什么会发生这种情况...即使 SQS 有足够的消息和足够的时间(300 秒)批处理窗口)来填充批处理,但它没有这样做。

我用 google 搜索了这个问题,发现 lambda 的最大有效负载大小可以是 6MB。我检查了我的消息及其大约。每条消息 2.5 KB。所以 30*2.5 = 75 KB 而已,没有达到 6MB 的限制。

此外,我怀疑 lambda 并发性,因此我仅将其设置为值 1。所以没有并行的 lambda 实例。

有人可以帮助我了解问题出在哪里吗?

amazon-sqs amazon-web-services aws-lambda

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

在android kitkat中找不到android.support.v4.content.FileProvider类

FileProvider在我的应用程序中使用。像往常一样,我<Provider>AndroidManifest.xml文件中声明了标签,如下所示。

<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.jk.android.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
</provider>
Run Code Online (Sandbox Code Playgroud)

当我在具有lollipop版本的android设备上运行它时,它工作正常。当我在kitkat版本上尝试时,它显示以下错误:

FATAL EXCEPTION: main
              Process: com.jk.android.perfectphotoeditor2018, PID: 24992
              java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.jk.android.perfectphotoeditor2018-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.jk.android.perfectphotoeditor2018-2, /system/lib]]
                  at android.app.ActivityThread.installProvider(ActivityThread.java:5071)
                  at android.app.ActivityThread.installContentProviders(ActivityThread.java:4648)
                  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4588)
                  at android.app.ActivityThread.access$1500(ActivityThread.java:151)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1290)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:136)
                  at android.app.ActivityThread.main(ActivityThread.java:5299)
                  at java.lang.reflect.Method.invokeNative(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:515)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:932)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:748)
                  at dalvik.system.NativeStart.main(Native Method)
               Caused by: java.lang.ClassNotFoundException: Didn't find class …
Run Code Online (Sandbox Code Playgroud)

android classnotfoundexception android-camera android-fileprovider

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

警报管理器的setExactAndAllowWhileIdle()无法正常工作

我正在开发一个需要在用户设置的确切时间执行特定操作的应用程序。为此,我正在使用setExactAndAllowWhileIdle()方法,因为此文档说具有android 6.0或更高版本的android设备具有休眠模式概念,如果设备闲置一段时间,它将进入休眠模式,并且休眠模式会限制警报。如果我想在设备进入打ze模式时发出警报,那么我有setExactAndAllowWhileIdle()文档所述的方法。本文档还包含手动方式,使设备进入打ze模式以进行测试。因此,我正在使用这种方式进行测试,但是当设备进入打ze模式时,并且当我通过终端命令停止打ze模式时,我的警报不会触发,过去的警报会立即触发。

因此,我的问题是setExactAndAllowWhileIdle()此方法无法在打ze模式下工作,但它必须按照文档中所述工作。我知道此方法的局限性,我每9分钟只能发出一个警报,并且我遵守此规则。所以,我不明白问题出在哪里。

我的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC, d.getTime(), pendingIntent);
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    alarmManager.setExact(AlarmManager.RTC, d.getTime(), pendingIntent);
else
    alarmManager.set(AlarmManager.RTC, d.getTime(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)

这是方法问题还是我做错方法了?

java android alarmmanager

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

实现/覆盖方法中的参数的适当名称

我正在使用android studio 3.0.1,我正在使用kotlin开发android应用程序.所以,我在我的项目中配置了kotlin.在我覆盖任何方法后配置kotlin后,我得到的参数名称为p0,p1,p2等,如下所示.

override fun query(p0: Uri?, p1: Array<out String>?, p2: String?, p3: Array<out String>?, p4: String?): Cursor {
    ...
}
Run Code Online (Sandbox Code Playgroud)

而不是这些名称我想要适当的参数名称,如投影,选择,selectionArgs等,如下所示.

public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我使用java它工作正常,但当我开始使用kotlin这个问题发生.此参数名称令人困惑.所以,我想得到像我在java代码中获得的名字.有没有办法做到这一点?

java parameters android parameter-passing kotlin

5
推荐指数
0
解决办法
358
查看次数

如何获取 Google Pay 公钥以进行直接集成

我正在尝试将 google pay 集成到我的 android 应用程序中。我在这里找到了官方集成指南。我想集成 google pay,中间没有任何支付网关(直接方法)。

我在 DIRECT 选项卡中找到了 DIRECT 方法集成代码。在谷歌要求protocolVersionpublicKey作为参数的情况下,我发现我可以在我的Google Pay Developer Profile. 我搜索了 Google Pay 开发者资料注册,但找不到注册 Google Pay 开发者资料和获取我的公钥的方法。

任何人都可以帮助我获取 google pay DIRECT 集成的公钥吗?

android payment-gateway kotlin google-pay

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

android studio 3.1最新版本上没有playstore的Android模拟器

我昨天将我的android studio 3.0.1更新为3.1,并且我试图创建nexus 5和nexus 5X的 AVD,而该默认值随playstore一起提供。我在上面安装了naugat Android 7.0(Google Apis)的x86系统映像。下载完成后,我启动了我的AVD,它包含一些google应用(gmail,playmusic,playmovie),但不包含Google Play商店或播放服务。为什么会发生?在较早版本的android studio中(例如3.0.1),如果我遵循相同的过程,则它将使用playstore创建AVD。谁能告诉我这是怎么回事?

[带有playstore徽标的nexus 5和5X的图片] 1

[我创建的AVD的图像未显示Playstore符号] 2

android android-virtual-device android-emulator android-studio

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

如何在Android的自定义列表视图中从Firebase数据库获取所有用户数据

我有Firebase数据库,每个孩子的uid都有孩子,这个孩子包含子孩子,例如用户名,城市等。

我想从Firebase数据库中获取所有用户的用户名和城市。

我怎样才能做到这一点?

我尝试了StackOverflow和其他网站上的许多解决方案,但我听不懂。

因此,如果您要答复我,请在答案中适当提及所有含义。

android listview data-retrieval firebase firebase-realtime-database

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

android中的同步方法

你可能会觉得这个问题是重复的一个,但没有这个问题的答案可以帮助我了解synchronized在Android的方法。我在Google上搜索了很多synchronized方法,以了解方法,但找到了一些答案,但是它们没有帮助我完全理解Synchronized方法,因为没有答案有任何完美的实际例子。

我试图synchronized通过synchronized在代码中实现2个方法并同时执行它们来理解方法,但是我未能正确实现它们。因此,请synchronized简单的例子提供方法的说明,像我这样的其他人也可以简单快速地理解它。

更新

我不确定我是否朝正确的方向前进,但是我尝试了以下具有2个同步方法的代码。

synchronized void add() {
    counter++;
    Log.e("JK", String.valueOf(counter));
}

synchronized void minus() {
    counter--;
    Log.e("JK", String.valueOf(counter));
}
Run Code Online (Sandbox Code Playgroud)

我已经使用下面的代码在两个不同的线程中调用了此方法。

new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    synchronized (counter++) {
                        add();
                    }
                }
            },500);
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    minus();
                }
            },1000);
Run Code Online (Sandbox Code Playgroud)

java android synchronized

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