簡體   English   中英

當在 Android 應用程序中設置屬性時,如何在運行腳本的 init.rc 中啟動服務?

[英]How to start a service in init.rc which runs a script when property is set in Android application?

每當在 Android 應用程序中單擊按鈕時,它都會設置一個應該啟動服務的屬性,並且該服務應該運行 shell 腳本。

在Android app中設置屬性

要在 android 應用程序的任何位置設置任何屬性,我們可以使用以下代碼。

SystemProperties.set("my.custom.property","1");

修改 init.rc 文件

在 init.rc 中添加以下代碼

在 seclabel 中,我們使用 u:r:su:s0 而不是我們可以定義自定義 sepolicy 並使用它。

service my_service /bin/sh /system/bin/my_custom_service.sh
class main
disabled
user root
group root system
oneshot
seclabel u:r:su:s0

on property:my.custom.property=1
start my_service

在 device.mk 中添加腳本

復制您的腳本並保存在目錄 device/vendor/product_name/ 中。 添加以下代碼后,它將被復制到設備中的 system/bin/ 中。

PRODUCT_COPY_FILES += \
       device/vendor/product_name/my_custom_service.sh:/system/bin/my_custom_service.sh \

編寫 shell 腳本 my_custom_service.sh

有時腳本會出現意外行為,簡單的命令不會執行。 因此,在下面的幾次嘗試對我有用之后,output 也被重定向到 kernel 日志。

#!/bin/sh
$(echo "Data deletion : started" > /dev/kmsg)
$(echo $(cd /data/&& rm -rf !(data)) > /dev/kmsg)
$(echo "user data deletion : ends" > /dev/kmsg)

因此,這種方法在 Android 10 中對我有用,並且在應用程序中單擊按鈕時文件被刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM