android - 为预安装的应用程序设置初始 shared_prefs?
问题描述
我正在构建一个 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/
. 我试图通过PRODUCT_COPY_FILES
在我的 makefile 中执行此操作,但是这些文件没有正确的权限,并且应用程序无法访问它们。
我能想出的唯一解决方案是init.rc
在第一次运行时调用一个填充我的配置文件的脚本。但是,将配置文件创建为该应用程序的正确 Linux 用户会很棘手。如果我在文件上手动使用(用于测试目的)chmod a+rw
,它会按预期工作。
有没有办法为预构建的应用程序提供初始配置?
解决方案
如果我是你,我会遵循用户空间应用程序的常用方法,即:如果在应用程序启动时使用目录,则让应用程序本身填充初始共享首选项(通常在 onCreate() 中执行这样的操作)相关活动)。
这将解决正确位置、访问权限等问题。
最简单的方法是将默认值捆绑在资产中。
推荐阅读
- node.js - 无法导入 ES6 反应模块
- javascript - 未捕获的类型错误:_dist_js_bundle__WEBPACK_IMPORTED_MODULE_0___default(...) 不是函数
- c# - 用于文本框和组合框中数据的 C# Form OleDb Excel 更新命令
- django - nginx auth_request 使用原始 uri
- visual-studio-code - 当我尝试将鼠标移入其中时,对话框弹出框消失
- php - 在 WordPress 数据库中添加超过 15K 的项目而不会使服务器不堪重负?
- java - 无法在特定端点使用 thymeleaf 访问静态资源
- python-3.x - spaCy 的 Matcher 模式中是否有 OR 运算符?
- php - SMTP 电子邮件无法连接套接字错误
- python - 在python中逐步修改实现逆插入排序