android - 为预装应用程序设置初始 shared_prefs?

标签 android android-source

我正在构建一个 Android 镜像,并使用以下 Android.mk 预安装一个应用程序:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := MyApplication
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := com.foobar.myapplication.apk
include $(BUILD_PREBUILT)

现在我还想预装一些配置文件。为此,我必须将文件复制到 /data/data/com.foobar.myapplication/shared_prefs/。我尝试通过我的 makefile 中的 PRODUCT_COPY_FILES 执行此操作,但是这些文件没有正确的权限,应用程序无法访问它们。

我能想出的唯一解决方案是从 init.rc 调用一个脚本,该脚本在第一次运行时填充我的配置文件。但是,将配置文件创建为该应用程序的正确 Linux 用户会很棘手。如果我在文件上手动使用(出于测试目的)chmod a+rw,它会按预期工作。

有什么方法可以为预构建的应用程序提供初始配置吗?

最佳答案

如果我是你,我会遵循用户空间应用程序的常用方法,即:如果在应用程序启动时使用了目录,则让应用程序本身填充初始共享首选项(通常在 onCreate( ) 所有相关 Activity )。

这将解决正确的位置、访问权限等问题。

最简单的方法是将默认值 bundle 在 Assets 中。

关于android - 为预装应用程序设置初始 shared_prefs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444947/

相关文章:

android - AOSP 和 IntelliJ IDEA

android - 如何在不构建所有 Android 的情况下构建 AOSP 应用程序?

android - AOSP 内核与 Stock 内核之间的技术差异

android - 如果有的话,什么情况会导致 TextView.setText ("") 阻塞?

android - 无法解析 Android 中的方法 getContext()

android - 如何从 Android 源代码导入单个项目

android - 在 Android.bp 中使用 Golang 在 "optional_subdirs"上应用条件?

android - 进度条设置可见不起作用

android - 使用 TableLayout 时行中项目的对齐方式

android - Google PlayStore 的 Alpha/Beta 测试