我正在尝试在我的应用程序中实现应用程序内更新,以便当有新的更新时,用户可以看到它。
我已仔细遵循此处列出的所有步骤 - https://developer.android.com/guide/playcore/in-app-updates/kotlin-java
但由于某些原因,更新对话框没有显示......
活动.kt
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.Theme_DirectMusicPlayer)
super.onCreate(savedInstanceState)
initViews()
setContentView(binding.root)
}
private fun initViews(){
checkForUpdate()
}
private fun checkForUpdate(){
appUpdateManager = AppUpdateManagerFactory.create(this)
// Returns an intent object that you use to check for an update.
val appUpdateInfoTask = appUpdateManager.appUpdateInfo
// Checks that the platform will allow the specified type of update.
appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
{
// Request the update.
appUpdateManager.startUpdateFlowForResult(
// Pass the intent that is returned by 'getAppUpdateInfo()'.
appUpdateInfo, …Run Code Online (Sandbox Code Playgroud) 添加了刀柄依赖项:
构建.gradle(项目)
def hilt_version = "2.38.1"
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
Run Code Online (Sandbox Code Playgroud)
构建.gradle(应用程序)
plugins {
id 'dagger.hilt.android.plugin'
....
}
....
dependencies {
implementation "com.google.dagger:hilt-android:2.38.1"
kapt "com.google.dagger:hilt-compiler:2.38.1"
.......
}
Run Code Online (Sandbox Code Playgroud)
我还有一个全局应用程序类:
我的应用程序.kt
@HiltAndroidApp
class MyApplication : Application()
Run Code Online (Sandbox Code Playgroud)
在我的清单中:
清单.xml
<application
android:allowBackup="true"
android:name=".global.MyApplication"/>
Run Code Online (Sandbox Code Playgroud)
现在,我创建一个模块
网络模块.kt
@Module
@InstallIn(SingletonComponent::class)
class NetworkModule {
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码时出现错误:
**任务“:app:kaptDebugKotlin”执行失败。
执行 org.jetbrains.kotlin.gradle.internal.KaptExecution java.lang.reflect.InitationTargetException 时发生失败(无错误消息)**
当我删除这些时: @Module()和@InstallIn()
错误消失了...
可能是什么问题呢?向我显示的错误根本没有提供任何信息。
android dependency-injection kotlin android-studio dagger-hilt
我正在使用 Dagger Hilt 进行依赖注入
我有一堂课——
会话管理器
class SessionManager (context: Context){
private val dataStore: DataStore<Preferences> = context.createDataStore(
name = "session"
)
companion object{
val IS_LOGIN = preferencesKey<Boolean>(name = "is_login")
}
suspend fun setLogin(isLogin: Boolean){
dataStore.edit {
preferences ->
preferences[IS_LOGIN] = isLogin
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在这样的活动中调用 setLogin 函数 -
主要活动
@AndroidEntryPoint
class MainActivity @Inject constructor(private val sessionManager: SessionManager) :
AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
lifecycleScope.launch {
sessionManager.setLogin(true)
}
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序
@HiltAndroidApp
class MyApplication : Application() {
}
Run Code Online (Sandbox Code Playgroud)
显现
<application
android:name=".MyApplication" …Run Code Online (Sandbox Code Playgroud)