小编Har*_*r S的帖子

在应用程序审查(FakeReviewManager)对话框中未显示在 android 中

android studio 中有一个用 kotlin 编写的简单应用程序。这是下面的代码 onCreate

val manager = FakeReviewManager(baseContext)
    val request = manager.requestReviewFlow()

    request.addOnCompleteListener{ request ->
        if (request.isSuccessful){
            Log.i("message","Rating")
            manager.launchReviewFlow(this, request.result).addOnCompleteListener{
                Log.i("message","Rating1")
            }
        }else{
        }
    }
Run Code Online (Sandbox Code Playgroud)

在 Logcat 消息显示成功。但是什么都没有显示。如何解决这个问题?

android review rate kotlin google-play-core

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

如何防止错误膨胀类 com.google.android.exoplayer2.ui.PlayerView?

Exoplayer2 在三星、Vivo、小米等设备的发布和调试版本中运行良好。但是,当我在 Play 商店上发布我的应用程序时,它在某些设备(例如 Nexus、Pixel 手机)上抛出错误。

Crashlytics showing this error: Caused by android.view.InflateException: 
Binary XML file line #11: Error inflating class com.google.android.exoplayer2.ui.PlayerView
Run Code Online (Sandbox Code Playgroud)

我发现已经就同一问题提出了一些类似的问题,但对我来说没有任何用处。(我使用的是默认播放器,没有任何自定义)任何人都可以帮我解决这个问题吗?

我的代码:

<com.google.android.exoplayer2.ui.PlayerView
      android:id="@+id/playerView"
      android:focusable="true"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
  />


 var player:SimpleExoPlayer?=null


  override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.pdf_view_normal)

       player = ExoPlayerFactory.newSimpleInstance(this)
       val mediaDataSourceFactory = DefaultDataSourceFactory(this, getUserAgent(this, "demo.smart.com"))

      val mediaSource = ProgressiveMediaSource.Factory(mediaDataSourceFactory)
                                        .createMediaSource(Uri.parse(""))

        with(player) {
               this!!.prepare(mediaSource, false, false)
               playWhenReady = true
                     }

        playerView.setShutterBackgroundColor(Color.TRANSPARENT)
        playerView.player = player
        playerView.requestFocus()

}


override fun onDestroy() {
     super.onDestroy()

        if(player!=null){
                player!!.stop()
         }
 }
Run Code Online (Sandbox Code Playgroud)

摇篮 …

crash android invocationtargetexception inflate-exception exoplayer2.x

7
推荐指数
0
解决办法
1215
查看次数

致命异常:java.net.UnknownHostException 无法解析主机“maps.googleapis.com”:没有与主机名关联的地址

如何处理这次崩溃?我的项目中没有任何文件 Dns.kt,随机用户崩溃。

Dns.kt 第 49 行 okhttp3.Dns$Companion$DnsSystem.lookup 在此输入图像描述

致命异常:java.net.UnknownHostException 无法解析主机“maps.googleapis.com”:没有与主机名 java.net.Inet6AddressImpl.lookupHostByName 关联的地址

Fatal Exception: java.net.UnknownHostException: Unable to resolve host "maps.googleapis.com": No address associated with hostname
       at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:156)
       at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
       at java.net.InetAddress.getAllByName(InetAddress.java:1152)
       at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.kt:49)
       at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.kt:164)
       at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.kt:129)
       at okhttp3.internal.connection.RouteSelector.next(RouteSelector.kt:71)
       at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:205)
       at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
       at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)
       at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)
       at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
       at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
       at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
       at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
       at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
       at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
       at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
       at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
       at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
       at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
       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:919)
Run Code Online (Sandbox Code Playgroud)

由 android.system.GaiException 引起 android_getaddrinfo 失败:EAI_NODATA(没有与主机名关联的地址)okhttp3.Dns$Companion$DnsSystem.lookup

Caused by android.system.GaiException: …
Run Code Online (Sandbox Code Playgroud)

android okhttp

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

如何在 Jetpack Compose 中制作可滚动警报的内容?

我尝试创建全屏警报对话框,但无法在内容内滚动!

如何在 Jetpack Compose 中制作可滚动全屏警报对话框的内容?

package com.compose.example

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.window.DialogProperties
import com.compose.example.ui.theme.ComposeExampleTheme

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeExampleTheme {
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    MainContent()
                }
            }
        }
    }
}


@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun MainContent() {
    val openDialog = remember { mutableStateOf(false) }
    Box(
        contentAlignment = …
Run Code Online (Sandbox Code Playgroud)

android-jetpack-compose

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

使用 Datastore 防止内存泄漏的最佳做法是什么?

我尝试使用数据存储首选项 alpha07 存储和获取数据,一切正常,我在数据存储中遇到了一些内存泄漏问题

使用 Datastore 防止内存泄漏的最佳做法是什么?

这是我的示例代码:

// Preferences DataStore
    implementation "androidx.datastore:datastore-preferences:1.0.0-alpha07"
// Leakcanary find memory leak
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.6'
Run Code Online (Sandbox Code Playgroud)

用户管理器.kt

import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map

class UserManager(val dataStore: DataStore<Preferences>) {

    //Create some keys
    companion object {
        val USER_AGE_KEY = intPreferencesKey("USER_AGE")
        val USER_FIRST_NAME_KEY = stringPreferencesKey("USER_FIRST_NAME")
        val USER_LAST_NAME_KEY = stringPreferencesKey("USER_LAST_NAME")
        val USER_GENDER_KEY = booleanPreferencesKey("USER_GENDER")
    }

    //Store user data
    suspend fun storeUser(age: Int, fname: String, lname: String, isMale: Boolean) {
        dataStore.edit {
            it[USER_AGE_KEY] = age
            it[USER_FIRST_NAME_KEY] = fname
            it[USER_LAST_NAME_KEY] = …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack kotlin-coroutines android-jetpack-datastore

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

java.lang.reflect.InvocationTargetException 而 inappupdate android 如果重试

重现此错误的步骤:

  1. 单击更新按钮并打开更新应用程序对话框,因为它是AppUpdateType.FLEXIBLE.
  2. 点击 No, thanks
  3. 再次尝试更新。应用程序崩溃并出现以下错误:

我在以下行通过 inappupdate 更新应用程序时遇到此异常。

appUpdateManager?.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE_FLEXI_UPDATE) //it == AppUpdateInfo object
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:451)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 
Caused by: android.content.IntentSender$SendIntentException
        at android.app.Activity.startIntentSenderForResultInner(Activity.java:4878)
        at android.app.Activity.startIntentSenderForResult(Activity.java:4847)
        at androidx.fragment.app.FragmentActivity.startIntentSenderForResult(FragmentActivity.java:796)
        at android.app.Activity.startIntentSenderForResult(Activity.java:4814)
        at androidx.fragment.app.FragmentActivity.startIntentSenderForResult(FragmentActivity.java:781)
        at com.google.android.play.core.appupdate.b.startUpdateFlowForResult(Unknown Source:22)
        at newProfile.NewProfileFragment.startForInAppUpdate(NewProfileFragment.kt:752)
        at newProfile.NewProfileFragment.access$startForInAppUpdate(NewProfileFragment.kt:60)
        at newProfile.NewProfileFragment$setupAppUpdate$3.onClick(NewProfileFragment.kt:682)
        at android.view.View.performClick(View.java:6935)
        at android.widget.TextView.performClick(TextView.java:12752)
        at android.view.View$PerformClick.run(View.java:26214)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
Run Code Online (Sandbox Code Playgroud)

细节:

安卓版本:8.0
手机:三星J7

更新

根据文档,startUpdateFlowForResult应该只调用一次AppUpdateInfo实例。要再次调用,您必须创建AppUpdateInfo …

android kotlin in-app-update google-play-core

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

导航组件:如何从活动导航到片段

我想在(活动)中单击 FAB 导航到新片段 1。

在我所有页面通用的主要活动中的代码 fab 按钮中。有人可以指导我吗?在此处输入图片说明

活动.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/mobile_navigation" />

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottomAppBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:navigationIcon="@drawable/ic_baseline_dashboard_24"
        app:navigationContentDescription="Navigation icon"
        />
    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/floatingActionButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/bottomAppBar"
        android:backgroundTint="@color/colorPrimary"
        style="@style/Widget.App.FloatingActionButton"
        app:srcCompat="@drawable/menu_bug" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

图.xml

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mobile_navigation"
    app:startDestination="@+id/navigation_home">

    <fragment
        android:id="@+id/navigation_home"
        android:name="com.androidfeby.bugreport.ui.home.HomeFragment"
        android:label="@string/title_home"
        tools:layout="@layout/fragment_home" />

    <fragment
        android:id="@+id/navigation_report"
        android:name="com.androidfeby.bugreport.ui.report.FragmentReport"
        android:label="@string/title_dashboard"
        tools:layout="@layout/fragment_report" />

    <fragment
        android:id="@+id/navigation_notifications"
        android:name="com.androidfeby.bugreport.ui.history.NotificationsFragment"
        android:label="@string/title_notifications"
        tools:layout="@layout/fragment_notifications" />
</navigation>
Run Code Online (Sandbox Code Playgroud)

要求:如果我点击 fab 按钮,只需导航到图中的片段“navigation_report”

android android-navigation android-jetpack android-architecture-navigation

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

在 Google Play 控制台中启用外部营销会发生什么?

外部营销\n如果您不\xe2\x80\x99不想在 Google Play 之外宣传您的应用,请关闭外部营销

\n

在此输入图像描述

\n

免费吗?\n启用此功能有什么好处吗?

\n

android google-play-console google-play-console-beta

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

Proguard 将所有混淆的类移至一个包中

到目前为止,我可以通过 proguard 保留一些类和方法等,现在混淆工作完美,这是我的问题,我注意到 proguard 碰巧重新打包了一些这样的类com.a.acom.a.b有没有一种方法可以避免留下类似的提示com.x.x并将所有一个包中的混淆类,例如a.a.**?(我见过的现实生活中的提示示例看起来像org.apache.a.x,任何反编译我的代码的人都会立即跳过该特定包,因为它散发着库 jar 的味道,我想将混淆的库和混淆的原始代码合并到一个包中)。我尝试了这个配置,但它不起作用。

        -allowaccessmodification
        -mergeinterfacesaggressively
        -useuniqueclassmembernames
        -keeppackagenames doNotKeepAThing   
Run Code Online (Sandbox Code Playgroud)

java android proguard

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

如何更改jetpack compose Snackbar的背景颜色?

我想将纯色或渐变颜色更改为 jetpack compose 小吃店。请指导我如何
改变颜色

这是我使用 Material3 撰写的小吃店,我正在寻找更改背景颜色的解决方案

import android.os.Bundle
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.*
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import compose.material.theme.ui.theme.Material3ComposeTheme
import compose.material.theme.ui.theme.Purple40
import kotlinx.coroutines.launch


class MainActivity : ComponentActivity() {

    @OptIn(ExperimentalMaterial3Api::class)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Material3ComposeTheme {


                val context = LocalContext.current

                val snackState = remember { SnackbarHostState() }
                val scope = …
Run Code Online (Sandbox Code Playgroud)

android android-snackbar android-jetpack-compose android-jetpack-compose-material3

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