小编Rus*_*nko的帖子

将项目添加到LiveData列表时通知观察者

将项目添加到LiveData列表时,我需要获取Observer事件.但正如我所理解的那样,只有当我用新的列表替换旧列表时才会收到事件.例如,当我做下一个时:

list.value = mutableListOf(IssuePost(UserEntity(name, email, photoUrl), issueEntity))
Run Code Online (Sandbox Code Playgroud)

观察者得到事件.但是当我只是将item添加到value时,Observer是静默的.您能否就我如何实施我的需求提出建议?

android kotlin android-livedata

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

Flutter Navigator.replace()示例

我需要替换当前的屏幕并replace在Navigator的API中找到方法。但是我没有找到任何例子。也许有人知道使用它很热。谢谢。

dart flutter

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

单击Google登录以获取预启动报告

要按照指南在Google Play上使用预发布报告,需要构建一个自定义alpha apk,让"机器人"通过登录按钮传递到主应用屏幕:

如果您的应用程序直接打开具有所需凭据(特定于应用程序,社交媒体)的登录屏幕,则可能会得到有限的结果,因为测试期间测试设备无法跳过这些屏幕.

要对您的应用进行更完整的测试,您可以发布带有登录按钮的alpha或beta APK,该按钮允许测试设备只需单击即可继续测试您的应用.

例如,您可以发布带有"使用测试帐户登录"按钮的Alpha APK,该按钮会使用预加载的帐户信息加载您的应用.

问题:是否可以设置这样一个"虚假谷歌登录按钮",以便它嵌入真实测试帐户的帐户名/密码?

java android google-signin

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

使用帮助辅助功能服务在其他应用程序上绘制视图的多个应用程序无法同时运行

我在设备上的两个不同应用程序中有两个辅助功能服务.他们每个人都对其他应用程序有一些看法.我面临以下问题:当启用2个辅助功能服务时,只有一个绘制视图,另一个不会获得任何事件.

事件配置如下:

 @Override
 protected void onServiceConnected() {
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
    info.feedbackType = AccessibilityEvent.TYPES_ALL_MASK;
    info.notificationTimeout = TIMEOUT_IN_MS;
    setServiceInfo(info);
    super.onServiceConnected();
 }
Run Code Online (Sandbox Code Playgroud)

我可以在前Lollipop Android版本上重现它,也可以在Android M上重现.在Android O和N上,所有服务都可以正常工作.

有人可以向我解释它是如何发生的,也许从Android N开始有一些改进吗?如果有办法让它们同时工作,你能不能给我一个实现呢?

android accessibilityservice android-accessibility

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

StrictMode AndroidBlockGuardPolicy.onReadFromDisk

我面临下一个问题:

StrictMode policy violation; ~duration=2235 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
                                                                   at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1278)
                                                                   at libcore.io.BlockGuardOs.lseek(BlockGuardOs.java:162)
                                                                   at java.io.RandomAccessFile.seek(RandomAccessFile.java:603)
                                                                   at java.util.zip.Zip64.parseZip64EocdRecordLocator(Zip64.java:98)
                                                                   at java.util.zip.ZipFile.readCentralDir(ZipFile.java:419)
                                                                   at java.util.zip.ZipFile.<init>(ZipFile.java:175)
                                                                   at java.util.zip.ZipFile.<init>(ZipFile.java:131)
                                                                   at dalvik.system.DexPathList$Element.maybeInit(DexPathList.java:452)
                                                                   at dalvik.system.DexPathList$Element.findResource(DexPathList.java:499)
                                                                   at dalvik.system.DexPathList.findResource(DexPathList.java:360)
                                                                   at dalvik.system.BaseDexClassLoader.findResource(BaseDexClassLoader.java:67)
                                                                   at java.lang.ClassLoader.getResource(ClassLoader.java:403)
                                                                   at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:442)
                                                                   at ch.qos.logback.classic.util.ContextInitializer.getResource(Unknown Source)
                                                                   at ch.qos.logback.classic.util.ContextInitializer.findConfigFileURLFromAssets(Unknown Source)
                                                                   at ch.qos.logback.classic.util.ContextInitializer.autoConfig(Unknown Source)
                                                                   at org.slf4j.impl.StaticLoggerBinder.init(Unknown Source)
                                                                   at org.slf4j.impl.StaticLoggerBinder.<clinit>(Unknown Source)
                                                                   at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
                                                                   at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
                                                                   at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
                                                                   at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
                                                                   at com.my.utils.x.c(LogUtils.java:164)
                                                                   at com.my.utils.x.b(LogUtils.java:65)
                                                                   at com.my.Application.onCreate(Application.java:148)
                                                                   at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1018)
                                                                   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4970)
                                                                   at android.app.ActivityThread.-wrap1(ActivityThread.java)
                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1560)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                   at android.os.Looper.loop(Looper.java:207)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5765)
                                                                   at java.lang.reflect.Method.invoke(Native …
Run Code Online (Sandbox Code Playgroud)

android android-strictmode

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

带有 Kotlin Flow toList() 的 Android Room 库不起作用

我使用 Room 和 Flows 制作了一个简单的示例应用程序:

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val build = Room.databaseBuilder(this, FinanceDatabase::class.java, "database.db")
            .fallbackToDestructiveMigration()
            .build()
    GlobalScope.launch {
        build.currencyDao().addCurrency(CurrencyLocalEntity(1))
        val toList = build.currencyDao().getAllCurrencies().toList()
        Log.d("test", "list - $toList")
    }
}
}

@Entity(tableName = "currency")
data class CurrencyLocalEntity(
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "currencyId")
        var id: Int
) {
    constructor() : this(-1)
}

@Dao
interface CurrencyDao {

@Query("SELECT * FROM currency")
fun getAllCurrencies(): Flow<CurrencyLocalEntity>

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun addCurrency(currency: CurrencyLocalEntity)
}

@Database(entities …
Run Code Online (Sandbox Code Playgroud)

android android-room kotlin-coroutines kotlin-flow

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

Firebase数据库保存FCM令牌以避免重复的更好方法

我需要将FCM令牌保存到Firebase数据库中以发送通知。有更好的方法吗?现在我这样做:

FirebaseDatabase.getInstance().reference.child("users/${user.uid}/tokens").push().setValue(token)
Run Code Online (Sandbox Code Playgroud)

这样,每次按下令牌时,令牌都有新的唯一ID,并且可以具有相同的令牌。

你能给我个建议吗?或者,也许我可以使用Firebase函数来做到这一点,它将删除重复项。

android firebase firebase-realtime-database firebase-cloud-messaging

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

Android 获取拨号器包名

我需要获取发布有关未接来电的通知的应用程序的包名称。据我了解,它制作了设备的拨号器应用程序。我可以从 API 19 获取设备上拨号器应用程序的包名称吗?

android android-dialer

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

Android compose Icon重组问题

我创建了一个仅显示一个图标、两个文本和两个按钮的应用程序。单击任何按钮时,相应的文本都会更新,因为它取决于我的函数中传递的值。但与文本一起,每次图标重新组合时,它甚至不依赖于任何值。

data class TestUIState(
    val counterA: Int = 0,
    val counterB: Int = 0,
)

@HiltViewModel
class TestViewModel @Inject constructor() : ViewModel() {
    val uiFlow = MutableStateFlow(TestUIState())
    val data: TestUIState
        get() = uiFlow.value


    fun increaseCounterA() {
        uiFlow.value = data.copy(counterA = data.counterA + 1)
    }

    fun increaseCounterB() {
        uiFlow.value = data.copy(counterB = data.counterB + 1)
    }
}

@Composable
fun TestCompose(
    uiValueState: State<TestUIState>,
    increaseCounterA: () -> Unit,
    increaseCounterB: () -> Unit,
) {
    Column(modifier = Modifier.fillMaxSize()) {
        Icon(
            painter = painterResource(id = …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

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

java.lang.SecurityException:Permission Denial:启动Intent {act = android.settings.USAGE_ACCESS_SETTINGS}

尝试startActivityForResult(intent, requestCode);使用final Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);intent 时,我得到java.lang.SecurityException .有趣的是这次崩溃只发生在华为的Android 5.1 - 5.1.1上我没有华为设备.你能告诉我它的建议吗?

堆栈跟踪

Fatal Exception: java.lang.SecurityException: Permission Denial: starting Intent { act=android.settings.USAGE_ACCESS_SETTINGS cmp=com.android.settings/.Settings$UsageAccessSettingsActivity } from ProcessRecord{11b5f1a1 19764:com.myproject.my/u0a167} (pid=19764, uid=10167) not exported from uid 1000
       at android.os.Parcel.readException(Parcel.java:1546)
       at android.os.Parcel.readException(Parcel.java:1499)
       at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2448)
       at android.app.Instrumentation.execStartActivity(Instrumentation.java:1496)
       at android.app.Activity.startActivityForResult(Activity.java:3794)
       at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
       at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:77)
       at android.app.Activity.startActivityForResult(Activity.java:3755)
       at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)
       at com.myproject.my.utils.PermissionsHelper$2.onClick(PermissionsHelper.java:134)
       at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5298)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
Run Code Online (Sandbox Code Playgroud)

java android securityexception android-securityexception

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