小编Anx*_*tta的帖子

通过'强制停止'或任务管理器杀死app后,共享首选项byte []值被清除

问题

byte[]在共享首选项中保存了一个.我可以关闭应用程序并使用共享首选项中持久保存的值重新打开它.运行应用程序并通过"任务管理器"或"强制关闭"关闭它时,将byte[]清除该共享首选项值.我不明白这一点,因为其他价值观仍然存在.

这让我相信这是由于某些gson或共享首选项问题,byte[]因此我将其转换为字符串,我仍然有问题.

编辑:
我在正常活动使用期间保存数据... onCreate()例如,之后.它不是在期间onPuse()onDestroy()我忘了提到这一点.如果我在这里调用它并且在"强制关闭"场景中没有调用其中一个或两个,那将是有意义的.


共享偏好码

稍加修改以删除应用程序特定的实现和数据

private static final String SHARED_PREFERENCES_FILE_NAME = "SharedPreferenceName";

    public static void setSharedPreferenceObjectBase64Encoded(Context context, String key, Object object) throws Exception {
        // Need an editor to update shared preference values
        SharedPreferences.Editor editor = context.getSharedPreferences(SHARED_PREFERENCES_FILE_NAME, Context.MODE_PRIVATE).edit();
        Gson gson = new GsonBuilder().serializeNulls().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").create();
        String encodedKey = Base64.encodeToString(key.getBytes(), 0, key.getBytes().length, Base64.DEFAULT);
        String stringObject = gson.toJson(object);
        String encodedObject = Base64.encodeToString(stringObject.getBytes(), 0, stringObject.getBytes().length, Base64.DEFAULT);
        editor.putString(encodedKey, encodedObject);
        editor.apply();
    }

    public …
Run Code Online (Sandbox Code Playgroud)

android gson sharedpreferences

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

FingerprintManagerCompat方法与三星设备有问题

问题

java.lang.SecurityException: Permission Denial: getCurrentUser() from pid=#####, uid=##### requires android.permission.INTERACT_ACROSS_USERS
    at android.os.Parcel.readException(Parcel.java:1620)
    at android.os.Parcel.readException(Parcel.java:1573)
    at android.hardware.fingerprint.IFingerprintService$Stub$Proxy.hasEnrolledFingerprints(IFingerprintService.java:503)
    at android.hardware.fingerprint.FingerprintManager.hasEnrolledFingerprints(FingerprintManager.java:768)
    at android.support.v4.hardware.fingerprint.FingerprintManagerCompatApi23.hasEnrolledFingerprints(FingerprintManagerCompatApi23.java:39)
    at android.support.v4.hardware.fingerprint.FingerprintManagerCompat$Api23FingerprintManagerCompatImpl.hasEnrolledFingerprints(FingerprintManagerCompat.java:239)
    at android.support.v4.hardware.fingerprint.FingerprintManagerCompat.hasEnrolledFingerprints(FingerprintManagerCompat.java:66)
Run Code Online (Sandbox Code Playgroud)

此问题仅发生在某些三星设备上:

  • Galaxy S6 Active(marinelteatt)
  • Galaxy On5(on5ltemtr)
  • Galaxy J7(2016)(j7eltetmo)

(崩溃报告中的数据)


目前的研究解决方案

在研究问题之后,我发现的唯一解决方案是向清单添加以下权限:

<permission
    android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
    android:protectionLevel="signature"/>
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,我不确定这是否是最好或最合适的解决方案.


为什么抛出这个异常?以上解决方案是否正确?

我真的想了解更多相关信息.

谢谢!

android fingerprint

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

用来自新 Android Studio 项目的重建版本替换当前应用程序

信息:

目前,我在市场上有一个正在积极使用的应用程序。我没有重构我的所有代码来重建应用程序,而是在一个新的 Android Studio 项目中使用相同/更新的信息 (applicationId/packageId/versions) 从头开始​​重建整个应用程序。我想将此 apk 上传到 google play 商店,让它正常更新用户。

问题:

在我的设备上测试这种情况没有奏效。我有一个带有“旧”应用程序的设备,我尝试安装“新”版本,但在安装过程中收到此错误:“软件包似乎已损坏”

题:

这个过程甚至可能吗?如果是这样,为什么我会收到此错误?如果没有,我可以通过什么方法来做到这一点?

谢谢!

android apk android-studio

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