小编Kas*_*mir的帖子

为什么在 Android Q 及更高版本上不需要 WRITE_EXTERNAL_STORAGE

我使用 DownloadManager 下载照片并将其保存到外部图片目录:

.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, File.separator + filename)
Run Code Online (Sandbox Code Playgroud)

Marshmallow 需要 WRITE_EXTERNAL_STORAGE(如预期),但在 Android Q 及更高版本上,它无需许可即可正常工作。为什么会这样?是因为范围存储吗?

android android-permissions android-download-manager android-external-storage scoped-storage

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

如何在 Kotlin 中获取可绘制对象?

我正在 Android Studio 中开发一个小项目。我已将可绘制添加到 res/drawable 文件夹中。 在此输入图像描述

但是我无法从代码中获取它。我尝试过不同的方法:

ContextCompat.getDrawable(getActivity(), R.drawable.ic_training);
Run Code Online (Sandbox Code Playgroud)

val drawable: Drawable? = ContextCompat.getDrawable(context.applicationContext, R.drawable.ic_training )
val drawable2: Drawable = R.drawable.ic_training
Run Code Online (Sandbox Code Playgroud)

它们都返回错误未解决的引用。这是我的 XML 文件:

<vector
        android:id = "@+id/ic_training"
        android:alpha="0.85" android:height="24dp"
    android:viewportHeight="24.0" android:viewportWidth="24.0"
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="ic_training"    >
    <path android:fillColor="#FF000000" android:pathData="M22,21c-1.11,0 -1.73,-0.37 -2.18,-0.64 -0.37,-0.22 -0.6,-0.36 -1.15,-0.36 -0.56,0 -0.78,0.13 -1.15,0.36 -0.46,0.27 -1.07,0.64 -2.18,0.64s-1.73,-0.37 -2.18,-0.64c-0.37,-0.22 -0.6,-0.36 -1.15,-0.36 -0.56,0 -0.78,0.13 -1.15,0.36 -0.46,0.27 -1.08,0.64 -2.19,0.64 -1.11,0 -1.73,-0.37 -2.18,-0.64 -0.37,-0.23 -0.6,-0.36 -1.15,-0.36s-0.78,0.13 -1.15,0.36c-0.46,0.27 -1.08,0.64 -2.19,0.64v-2c0.56,0 0.78,-0.13 1.15,-0.36 0.46,-0.27 1.08,-0.64 2.19,-0.64s1.73,0.37 2.18,0.64c0.37,0.23 0.59,0.36 1.15,0.36 0.56,0 0.78,-0.13 1.15,-0.36 …
Run Code Online (Sandbox Code Playgroud)

android drawable kotlin android-resources

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

如何在 Android Room 中加入同一对象的多个实例?

注意:我不能使用关系,因为我们有性能问题,这在直接连接查询中没有重现。

直到我添加target user和来自group user和对应

LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_target_user
LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_from_group_user
Run Code Online (Sandbox Code Playgroud)

它运作良好。但是添加后,我无法弄清楚如何在查询中映射这些前缀。

class ReadMessageEntity(
  @Embedded
  var message: MessageEntity,
  @Embedded
  var block: BlockEntity?,
  @Embedded
  var user: ChatUserRelationEntity,
  @Embedded(prefix = "target_user_")
  var targetUser: ChatUserEntity?,
  @Embedded(prefix = "from_group_user_")
  var fromGroupUser: ChatUserEntity?
)
Run Code Online (Sandbox Code Playgroud)

这是我试图查询的:

  @Transaction
  @Query("""
    SELECT * FROM message_item 
    LEFT JOIN block_item ON block_item.block_message_id = message_item.message_local_id
    LEFT JOIN chat_user_relation ON chat_user_relation.chat_user_id = message_item.message_user_id
    LEFT JOIN chat_user ON chat_user.chat_user_id = message_item.messages_target_user
    LEFT JOIN …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-room

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

如何在exoplayer中监控播放位置

我正在努力寻找一种方法来创建线程来监视 Exoplayer 应用程序中的playbackPosition。

在下面的代码中,我需要的一个简单任务是通过重写onIsPlayingChanged函数每 1000 毫秒记录一次位置参数。但我知道这种情况只会发生一次,并且如果应用程序状态发生变化,但是为了使其连续,我认为我应该创建一个线程。请让我知道如何实现这一目标。正如你所看到的,注释的代码是我尝试过的,但它肯定是不正确的。

private class PlaybackStateListener implements Player.EventListener{

    @Override
    public void onIsPlayingChanged(boolean isPlaying) {
     //TODO: Add handler to poll the playback position continuously.
      /* if(isPlaying){
        HandlerCompat.
                postDelayed(new Runnable() {
                  @Override
                  public void run() {
                    long positionParam = playbackPosition;
                  }
                });
        }*/

      if (isPlaying) {
        Log.d(TAG, "Playing position is " + playbackPosition);
      } else {
        // Not playing because playback is paused, ended, suppressed, or the player
        // is buffering, stopped or failed. Check player.getPlaybackState,
        // player.getPlayWhenReady, …
Run Code Online (Sandbox Code Playgroud)

android exoplayer exoplayer2.x

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