相关疑难解决方法(0)

Android:如何通过adb清除应用缓存并保留用户数据?

我正在Android应用程序上运行一些自动化测试(使用calabash-android),我需要以编程方式触发清除应用程序的缓存,而不是用户数据.

我发现adb shell pm clear解决方案不够用,因为它清除了用户数据(包括登录详细信息).

有没有办法在应用程序外部实现这一点(即没有代码更改)?

android caching clear adb

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

如何永久禁用Android浏览器缓存?

我正在开发一个基于Web的应用程序,也应该在基于Android的手机上运行.由于我没有,我成功使用SDK中的模拟器.

但是当我不断更改应用程序的一些JavaScript页面时,浏览器使用旧版本的缓存(服务器上的缓存控制是正确的 - 但我没有那里需要过多缓存的正常用例)

那么有没有办法告诉(默认)Android浏览器永久禁用它的缓存?
或者是否可以使用adb命令清除缓存?

javascript android cache-control android-emulator

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

使用 Runtime.getRuntime 在 Android 上运行 shell 命令

我正在开发设备管理应用程序(已由制造商签名)。我正在使用它来安装其他应用程序,使用以下用于 android 9 的 adb shell 命令:-

cat /sdcard/Download/myfolder/newapp.apk | pm install -S 1528293
Run Code Online (Sandbox Code Playgroud)

我只是像这样传递它:-

String command = "cat /sdcard/Download/myfolder/newapp.apk | pm install -S 1528293"
Runtime.getRuntime().exec(command);
Run Code Online (Sandbox Code Playgroud)

但我收到错误“猫未知选项 S”。

当我从 adb shell 运行它时,相同的命令工作得很好。不知道我做错了什么,可以使用一些帮助。

编辑 1:- 我尝试运行如下命令:-

String[] commandInstall = {
                "/system/bin/sh",
                "-c",
                "cat /sdcard/Download/myfolder/newapp.apk | pm install -S 1528293"
        };
Process process = Runtime.getRuntime().exec(commandInstall);
Run Code Online (Sandbox Code Playgroud)

但现在我收到错误:-

ava.lang.SecurityException: Reverse mode only supported from shell
    at com.android.server.pm.PackageInstallerSession.doWriteInternal(PackageInstallerSession.java:679)
    at com.android.server.pm.PackageInstallerSession.write(PackageInstallerSession.java:612)
    at android.content.pm.PackageInstaller$Session.write(PackageInstaller.java:852)
    at com.android.server.pm.PackageManagerShellCommand.doWriteSplit(PackageManagerShellCommand.java:2447)
    at com.android.server.pm.PackageManagerShellCommand.runInstall(PackageManagerShellCommand.java:915)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:158)
    at android.os.ShellCommand.exec(ShellCommand.java:103)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21330)
    at android.os.Binder.shellCommand(Binder.java:634)
    at …
Run Code Online (Sandbox Code Playgroud)

java shell android adb

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

Firebase Android 自动登录

所以我设置了电子邮件/密码注册和登录。

那是有效的。我认为 Firebase 解决了这个问题,但显然没有。我希望在用户关闭应用程序后,下次打开应用程序时已经登录。

有什么不见了?

class LoginActivity : AppCompatActivity(){
    lateinit var auth: FirebaseAuth
    lateinit var user: FirebaseAuth

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

        auth = FirebaseAuth.getInstance()
    }

    fun loginLoginClicked(view: View) {
        // Perform login

        val email = loginEmailTxt.text.toString()
        val password = loginPasswordTxt.text.toString()

        auth.signInWithEmailAndPassword(email, password)
                .addOnSuccessListener {
                    finish()
                }
                .addOnFailureListener { exception ->
                    Log.e("Exception", "Could not sign in user - ${exception.localizedMessage}")
                }
        val loginIntent = Intent(this, MainActivity::class.java)
        startActivity(loginIntent)
    }

    fun loginCreateClicked(view: View) {
        // segue to the create user activity …
Run Code Online (Sandbox Code Playgroud)

android kotlin firebase firebase-authentication

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