小编Jee*_*eva的帖子

jetpack compose 中的 textAllCaps

如何实现与textAllCapsJetpack Compose 中相同的效果,我知道我可以对toUpperCase字符串本身使用方法将字符串转换为大写。但我想知道是否有一个属性可以添加到可Text组合项中以直观地将文本转换为大写?

Text(
    text = stringResource(id = R.string.app_name).toUpperCase(Locale.current)
)
Run Code Online (Sandbox Code Playgroud)

android-jetpack-compose

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

Firebase 不工作 com.google.firebase.installations.FirebaseInstallationsException

我正在开发一个 Android 应用程序,我想将应用程序移动到一个新的 firebase 项目,所以我删除了旧的 firebase 项目并创建了一个新的项目,然后我将我的应用程序添加到该项目中。在那之后,没有 Firebase 功能在工作。

我的应用程序中有 firebase 云消息传递,它正在工作,但现在无法工作,我没有收到FirebaseMessagingService$onNewToken,而且我正在firestore用作我的后端数据库。在我里面我.addOnSuccessListener得到0取回文件。它没有失败,但没有返回任何文件。

我认为可能是 firebase 的问题,所以我在其中创建了一个测试应用程序,node.js并尝试从中获取文档firestore它工作正常。

android 应用程序没有崩溃,但检查了错误日志,我看到了以下日志。

java.util.concurrent.ExecutionException: com.google.firebase.installations.FirebaseInstallationsException
        at com.google.android.gms.tasks.Tasks.zzb(Unknown Source:61)
        at com.google.android.gms.tasks.Tasks.await(Unknown Source:23)
        at com.google.firebase.iid.zzs.zzb(com.google.firebase:firebase-iid@@20.1.1:54)
        at com.google.firebase.iid.zzs.zza(com.google.firebase:firebase-iid@@20.1.1:89)
        at com.google.firebase.iid.zzv.run(Unknown Source:12)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: com.google.firebase.installations.FirebaseInstallationsException
        at com.google.firebase.installations.FirebaseInstallations.doRegistrationInternal(com.google.firebase:firebase-installations@@16.0.0:333)
        at com.google.firebase.installations.FirebaseInstallations.doGetId(com.google.firebase:firebase-installations@@16.0.0:280)
        at com.google.firebase.installations.FirebaseInstallations.access$lambda$0(Unknown Source:0)
        at com.google.firebase.installations.FirebaseInstallations$$Lambda$1.run(Unknown Source:2)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:764) 
2020-03-05 21:18:49.022 23658-23666/app.spidy.cyberwire E/spidy.cyberwir: Something went wrong getting fds from adb. …
Run Code Online (Sandbox Code Playgroud)

android firebase

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

自动高度 Jetpack 组合线圈图像

我正在尝试使用 Jetpack Compose Coil 显示具有填充宽度和自动高度的图像。我希望图像采用完整宽度和自动高度。但图像仅在我指定固定高度时显示。

Image(
    painter = rememberImagePainter(
        data = post.image
    ),
    contentDescription = null,
    contentScale = ContentScale.Crop,
    modifier = Modifier.fillMaxWidth()
)
Run Code Online (Sandbox Code Playgroud)

我尝试使用.fillMaxHeight()and.fillMaxSize()但它不起作用。我有什么办法可以实现这个目标吗?

android kotlin android-jetpack-compose coil

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

如何显示下载进度 Exoplayer

我正在尝试在 exoplayer 中离线下载视频,我想在活动中显示下载进度。

我如何绑定到DownloadServicein exoplayer。以便我可以更新活动中的当前下载进度?我尝试覆盖onBind方法,但没有onBind方法。

下载服务

class MediaDownloadService : DownloadService(
    C.DOWNLOAD_NOTIFICATION_ID, 1000,
    C.CHANNEL_ID, R.string.channel_name, R.string.channel_description
) {
    private lateinit var downloadManager: DownloadManager

    override fun onCreate() {
        downloadManager = DownloadUtil.getDownloadManager(this)
        downloadManager.addListener(object : DownloadManager.Listener {
            override fun onDownloadChanged(downloadManager: DownloadManager, download: Download) {
                if (download.bytesDownloaded == download.contentLength) {
                    toast("Download Completed!")
                }
                debug(download.failureReason)
            }
        })
        super.onCreate()
    }

    override fun getDownloadManager(): DownloadManager {
        return downloadManager
    }

    override fun getForegroundNotification(downloads: MutableList<Download>): Notification {
        val intent = Intent(this, MainActivity::class.java)
        val pendingIntent …
Run Code Online (Sandbox Code Playgroud)

android android-download-manager exoplayer2.x

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

如何在 Jetpack Compose 中显示横幅广告?

我刚刚开始学习 Jetpack Compose,UI 如此简化真是太好了。我正在学习如何使用 Jetpack 组合RecyclerView(Lazycolumn)等来实现所有 XML 视图。

我想知道如何在 Jetpack Compose 中显示 AdMob 横幅广告。我知道我们可以通过互操作性 API 来使用经典的 XML 视图。

AndroidView(...) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

有没有一种Compose的方式来实现Admob?或者我只能使用 AndroidView 以编程方式创建横幅广告视图。

admob android-jetpack-compose

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

jetpack compose 中的 onNewIntent

我正在从其他应用程序接收一些文本,例如,如果人们从 YouTube 应用程序共享视频,我的应用程序将显示在可共享列表中。如果他们选择我的应用程序,我想获取文本内容。

我有一个像这样的意图过滤器。

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:host="*" android:mimeType="text/*" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

onNewIntent我可以使用活动中的方法访问数据。

override fun onNewIntent(intent: Intent?) {
    Log.d(TAG, intent?.getStringExtra(Intent.EXTRA_TEXT).toString())
    super.onNewIntent(intent)
}
Run Code Online (Sandbox Code Playgroud)

但我想访问可组合函数内的文本,我该怎么做?

android android-jetpack-compose

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

使用 Compose for Desktop(Compose 多平台)捆绑文件

我是一名 Android 开发人员,拥有使用 Jetpack Compose 的经验。现在,我正在尝试构建桌面应用程序,所以我找到了这个Compose for Desktop项目。我想JSON使用桌面应用程序存储一个文件,以便我可以从桌面应用程序读取该文件并将其显示给用户。不仅是 JSON 文件,我还想存储一些其他文件,例如 HTML。

在 Android 中,我可以使用rawassets文件夹,但我不知道如何在 Compose for Desktop 中执行此操作。

如果有人能指出我正确的方向,我将不胜感激。

kotlin android-jetpack-compose compose-desktop compose-multiplatform

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

websocket._exceptions.WebSocketBadStatusException:握手状态 404 未找到

我正在尝试从 python 脚本与 Flask websocket 通信。但我收到以下异常。

Traceback (most recent call last):
  File "client.py", line 5, in <module>
    socket = create_connection("ws://127.0.0.1:5000")
  File "C:\Users\anyms\AppData\Local\Programs\Python\Python37-32\lib\site-packages\websocket\_core.py", line 514, in create_connection
    websock.connect(url, **options)
  File "C:\Users\anyms\AppData\Local\Programs\Python\Python37-32\lib\site-packages\websocket\_core.py", line 226, in connect
    self.handshake_response = handshake(self.sock, *addrs, **options)
  File "C:\Users\anyms\AppData\Local\Programs\Python\Python37-32\lib\site-packages\websocket\_handshake.py", line 79, in handshake
    status, resp = _get_resp_headers(sock)
  File "C:\Users\anyms\AppData\Local\Programs\Python\Python37-32\lib\site-packages\websocket\_handshake.py", line 160, in _get_resp_headers
    raise WebSocketBadStatusException("Handshake status %d %s", status, status_message, resp_headers)
websocket._exceptions.WebSocketBadStatusException: Handshake status 404 NOT FOUND
Run Code Online (Sandbox Code Playgroud)

应用程序

from flask import Flask
from flask_socketio import SocketIO, send


app …
Run Code Online (Sandbox Code Playgroud)

python websocket flask python-3.x

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

是否可以使用 MediaStore.VOLUME_EXTERNAL 获取 WhatsApp 媒体文件

我的应用程序需要备份 WhatsApp 状态、语音注释和图像的功能。如您所知,Android Q 后谷歌强制使用 MediaStore API 访问外部媒体文件。

WhatsApp 还将他们的文件移至/Android/media/com.whatsapp/WhatsApp. 我尝试使用MANAGE_EXTERNAL_STORAGE权限,它工作正常,但备份这些文件不是应用程序的核心功能,所以我认为谷歌不会让我使用此权限。

我想知道是否有任何方法可以使用 MediaStore.VOLUME_EXTERNAL 读取这些文件?

我尝试过这样的事情。我不确定这是否可能。

val collection = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL)

val selection= (MediaStore.Files.FileColumns.MEDIA_TYPE + "="
        + MediaStore.Files.FileColumns.MEDIA_TYPE_NONE)
val selectionArgs= arrayOf("%/WhatsApp/Media/.Statuses%")
val cursor = applicationContext.contentResolver.query(
    collection, null, selection, selectionArgs, null)
debug(cursor?.columnCount)
cursor?.close()
Run Code Online (Sandbox Code Playgroud)

它抛出异常。

Caused by: android.database.sqlite.SQLiteException: no such column: media_type
Run Code Online (Sandbox Code Playgroud)

android mediastore android-external-storage

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

如何在 Jetpack Compose 中监听生命周期

我正在使用 Jetpack Compose 创建一个应用程序。该应用程序在后台进行一些网络搜索。如果用户决定按后退按钮,我想取消搜索。所以我用DisposableEffect.

@Composable
fun SecondScreen() {
    val vm: MainViewModel = hiltViewModel()

    DisposableEffect(key1 = vm) {
        onDispose {
            vm.cancelSearch()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道onDispose当可组合项被销毁时会调用它。但现在每次旋转屏幕时搜索都会被取消。我可以理解这一点,因为可组合项被破坏并重新创建。

我想知道我是否可以检测屏幕旋转生命周期,也许我可以防止这种行为。或者是否有更好的方法在用户按返回时取消搜索?

android kotlin android-jetpack-compose

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

可以将Math对象继承到es6类吗?

我可以Math在课堂上扩展对象吗?我希望Math静态字段在我的课堂内是静态的。

class MyClass extends Math {
  constructor() {
    super();
  }
}

console.log(MyClass.PI);
Run Code Online (Sandbox Code Playgroud)

javascript inheritance ecmascript-6

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

如何从 PreferenceFragmentCompat 访问自定义布局?

我想从设置为的自定义布局访问视图preference

设置屏幕.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">

    <Preference
            android:key="storage"
            android:layout="@layout/layout_storage" />

    ...
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

设置Fragment.kt

class SettingsFragment: PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {

    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        addPreferencesFromResource(R.xml.settings_screen)
    }
}
Run Code Online (Sandbox Code Playgroud)

stackoverflow 上有一个与此类似的问题,但在该答案中,他是从主布局文件而不是从preference

PreferenceFragmentCompat 自定义布局

我还发现这篇文章,他使用onBindView方法来访问自定义视图。

https://code.luasoftware.com/tutorials/android/override-layout-of-android-preference/

但没有方法onBindView调用PreferenceFragmentCompat

更新

布局存储.xml

class SettingsFragment: PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {

    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        addPreferencesFromResource(R.xml.settings_screen)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想得到progressBar

android android-preferences

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