#!/system/bin/sh # module: app_utils.sh Process_Information() { dumpsys activity processes | awk -v key="$1" -v user="$user" 'function getUserFromUid(uid){return int(uid/100000)} /^ *user #[0-9]+ uid=/ {if($0 ~ /ISOLATED uid=[0-9]+/){uid="";pid="";pkg="";next} if(pkg!="" && uid!="" && pid!=""){if((key=="" || pkg==key) && (user=="" || getUserFromUid(uid)==user)){print pid}} uid="";pid="";pkg=""; if($0 ~ /uid=/ && uid==""){tmp=$0; sub(/^.*uid=/,"",tmp); sub(/ .*/,"",tmp); uid=tmp}} /packageList=\{/ {tmp=$0; sub(/^.*packageList=\{/,"",tmp); sub(/\}.*/,"",tmp); pkg=tmp} /pid=/ {tmp=$0; sub(/^.*pid=/,"",tmp); sub(/ .*/,"",tmp); pid=tmp} END {if(pkg!="" && uid!="" && pid!=""){if((key=="" || pkg==key) && (user=="" || getUserFromUid(uid)==user)){print pid}}}' } Background_application_list() { [[ $activity != false ]] && { if [[ $Background_apps_ignore = true || $1 = debug ]]; then unset Backstage #獲取後台 Backstage="$(dumpsys activity activities | awk -v uid="$user" '/ActivityRecord\{/{split($4,a,"/"); user=$3; pkg=a[1]; if(user~/^u[0-9]+$/ && pkg!~/\//){sub(/^u/,"",user); if(uid=="" || user==uid) if(!seen[user","pkg]++) print pkg}}')" if [[ $Backstage = "" ]]; then Backstage="$(am stack list | awk -v uid="$user" '/taskId/&&!/unknown/{split($2,a,"/"); pkg=a[1]; user="unknown"; for(i=1;i<=NF;i++) if($i~/^userId=/){split($i,b,"="); user=b[2]; break} if(uid==""|user==uid) if(!seen[pkg]++) print pkg}')" [[ $Backstage = "" ]] && { echoRgb "獲取當前後台應用失敗" "0" && unset Backstage } fi fi } } kill_app() { process_Information="$(Process_Information "$name2")" if [[ $name2 != bin.mt.plus && $name2 != com.termux && $name2 != bin.mt.plus.canary ]]; then if [[ $process_Information != "" ]]; then am force-stop --user "$user" "$name2" &>/dev/null echo "$process_Information" | xargs -r kill -9 pkill -9 -f "$name2$|$name2[:/_]" #killall -9 "$name2" &>/dev/null #am kill "$name2" &>/dev/null echoRgb "殺死$name1進程" fi fi } disable_verify() { #禁用apk驗證 settings put global verifier_verify_adb_installs 0 2>/dev/null #禁用安裝包驗證 settings put global package_verifier_enable 0 2>/dev/null #未知來源 settings put secure install_non_market_apps 1 2>/dev/null #關閉play安全校驗 if [[ $(settings get global package_verifier_user_consent 2>/dev/null) != -1 ]]; then settings put global package_verifier_user_consent -1 2>/dev/null settings put global upload_apk_enable 0 2>/dev/null echoRgb "PLAY安全驗證為開啟狀態已被腳本關閉防止apk安裝失敗" "3" fi # 設定檔案路徑 FILE="/data/data/com.android.vending/shared_prefs/finsky.xml" if [[ -f $FILE ]]; then # 提取當前的 auto_update_enabled 值 CURRENT_VALUE="$(sed -n '//i \ ' "$FILE" [[ $(sed -n '//dev/null true_permissions="$(jq -r 'to_entries[] | select(.value.permissions != null) | .value.permissions | to_entries | map(select(.value | startswith("true")) | .key) | join(" ")' "$app_details")" false_permissions="$(jq -r 'to_entries[] | select(.value.permissions != null) | .value.permissions | to_entries | map(select(.value | startswith("false")) | .key) | join(" ")' "$app_details")" Set_Ops_permissions="$(jq -r '.[] | select(.permissions != null).permissions | to_entries | map(.value | split(" ")) | map(select(.[1] != "-1")) | map(.[1:]) | flatten | join(" ")' "$app_details")" [[ $true_permissions != "" ]] && { Set_true_Permissions "$name2" "$true_permissions" [[ $? != 0 ]] && echo_log "設置允許權限" } [[ $false_permissions != "" ]] && { Set_false_Permissions "$name2" "$false_permissions" [[ $? != 0 ]] && echo_log "設置拒絕權限" } [[ $Set_Ops_permissions != "" ]] && { Set_Ops "$name2" "$Set_Ops_permissions" [[ $? != 0 ]] && echo_log "設置ops權限" } } #分區佔用信息 partition_info() { unset Skip Occupation_status="$(df -B1 "${1%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1)}')" Filesize2="$(size "$Filesize")" echo " -$2大小:$Filesize2 剩餘大小:$(size "$Occupation_status")" [[ $Filesize != "" ]] && [[ $(echo "$Filesize > $Occupation_status" | bc) -eq 1 ]] && echoRgb "$2備份大小將超出rom可用大小" "0" && Skip=1 Occupation_status="$(df -h "${Backup%/*}" | sed -n 's|% /.*|%|p' | awk '{print $(NF-1),$(NF)}')" }