小编tes*_*est的帖子

Android 11.ContentResolver.query 返回空光标

我已经在我的应用程序中实现了从电话簿中选择联系人的功能。为了使动作 PICK 的意图在 android 11 上工作,我将其添加到我的清单中:

  <queries>
  <intent>
            <action android:name="android.intent.action.PICK" />
            <data android:mimeType="vnd.android.cursor.dir/phone_v2" />
        </intent>
</queries>
Run Code Online (Sandbox Code Playgroud)

该代码在 Android 版本 10 及更低版本上运行良好。但在 Android 版本 11 上,我从电话簿中选择的联系人不会插入到我的应用程序的文本字段中,因为 ContentResolver.query 返回空光标。it.moveToFirst() 返回 false 这是我的代码:

  Constants.START_PICK_CONTACT_ACTION -> {
                data?.data?.let { uri ->
                    activity.contentResolver.query(uri, null, null, null, null)?.use {
                                if (it.moveToFirst()) {
                                    val number: String? = it.getString(it.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
                                        etPhoneNumber.setText(number)
                                    }
                                }
                            }
            }
Run Code Online (Sandbox Code Playgroud)

请帮我。

android manifest android-contentresolver android-11

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

如何使用十进制格式仅隐藏整数中的尾随零

我需要这样的格式数字:

23.0 -> 23
23.20 -> 23.20
23.00 -> 23
23.11 -> 23.11
23.2 -> 23.20
23.999 -> 24
23.001 -> 23
1345.999 -> 1346 // Edited the question to add this from the OP's comment
Run Code Online (Sandbox Code Playgroud)

这是我的代码:java:

  public static String toPrice(double number) {
         DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
            formatSymbols.setGroupingSeparator(' ');
            DecimalFormat format = new DecimalFormat("#,###,###.##", formatSymbols);
            return format.format(number);
    
         }
Run Code Online (Sandbox Code Playgroud)

科特林:

fun Double.toPrice(): String =   DecimalFormat("#,###,###.##", DecimalFormatSymbols().apply {
                groupingSeparator = ' '
            }).format(this)
Run Code Online (Sandbox Code Playgroud)

但对于输入 23.20 或 23.2,我得到结果 23.2。这对我来说是错误的。我需要 23.20。我应该使用哪种字符串模式来实现此结果?请帮我。

java double decimalformat kotlin

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

使用 is 运算符时是否需要检查 null

我有一个可以为空的实例。狐狸的例子

var str: String? = null
Run Code Online (Sandbox Code Playgroud)

所以我需要检查 str 是否是字符串。如果我使用 is 运算符,是否需要检查 null。第一个选项:

if(str is String) {}
Run Code Online (Sandbox Code Playgroud)

第二个选项:

if(str != null && str is String) {} 
Run Code Online (Sandbox Code Playgroud)

请帮助我使用哪种方式更好?

typechecking kotlin

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