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 消息显示成功。但是什么都没有显示。如何解决这个问题?
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
如何处理这次崩溃?我的项目中没有任何文件 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) 我尝试创建全屏警报对话框,但无法在内容内滚动!
如何在 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) 我尝试使用数据存储首选项 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
重现此错误的步骤:
AppUpdateType.FLEXIBLE.No, thanks 我在以下行通过 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 …
我想在(活动)中单击 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
到目前为止,我可以通过 proguard 保留一些类和方法等,现在混淆工作完美,这是我的问题,我注意到 proguard 碰巧重新打包了一些这样的类com.a.a,com.a.b有没有一种方法可以避免留下类似的提示com.x.x并将所有一个包中的混淆类,例如a.a.**?(我见过的现实生活中的提示示例看起来像org.apache.a.x,任何反编译我的代码的人都会立即跳过该特定包,因为它散发着库 jar 的味道,我想将混淆的库和混淆的原始代码合并到一个包中)。我尝试了这个配置,但它不起作用。
-allowaccessmodification
-mergeinterfacesaggressively
-useuniqueclassmembernames
-keeppackagenames doNotKeepAThing
Run Code Online (Sandbox Code Playgroud) 我想将纯色或渐变颜色更改为 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
android ×9
kotlin ×3
android-architecture-navigation ×1
android-jetpack-compose-material3 ×1
crash ×1
exoplayer2.x ×1
java ×1
okhttp ×1
proguard ×1
rate ×1
review ×1