当前位置: 首页 > news >正文

广州天河 网站建设目前在哪个平台做推广好

广州天河 网站建设,目前在哪个平台做推广好,找客户在公司做网站,洛龙区网站制作建设费用摘要:Android 10(API 级别 29)及更高版本会限制应用何时可以启动 activity 背景。这些限制有助于最大限度地减少对用户的干扰, 让用户能够更好地控制其屏幕上显示的内容。本文以此为出发点,基于展锐平台对系统代码进行…

摘要:Android 10(API 级别 29)及更高版本会限制应用何时可以启动 activity 背景。这些限制有助于最大限度地减少对用户的干扰, 让用户能够更好地控制其屏幕上显示的内容。本文以此为出发点,基于展锐平台对系统代码进行改造,通过白名单的方式允许部分应用可以从后台启动activity。
Google官方:
针对从后台启动 activity 的限制

1.添加白名单

Index: build/make/target/product/base_system.mk
===================================================================
--- build/make/target/product/base_system.mk	(版本 1957)
+++ build/make/target/product/base_system.mk	(版本 1959)
@@ -269,6 +269,9 @@wifi-service \wm \+PRODUCT_PACKAGES += background-startactivity-package-whitelist.txt
+# VINTF data for system imagePRODUCT_PACKAGES += \system_manifest.xml \
Index: frameworks/base/data/etc/background-startactivity-package-whitelist.txt
===================================================================
--- frameworks/base/data/etc/background-startactivity-package-whitelist.txt	(不存在的)
+++ frameworks/base/data/etc/background-startactivity-package-whitelist.txt	(版本 1959)
@@ -0,0 +1 @@
+com.android.permissioncontroller
Index: frameworks/base/data/etc/Android.bp
===================================================================
--- frameworks/base/data/etc/Android.bp	(版本 1957)
+++ frameworks/base/data/etc/Android.bp	(版本 1959)
@@ -133,3 +133,9 @@sub_dir: "permissions",src: "com.android.timezone.updater.xml",}
+
+prebuilt_etc {
+    name: "background-startactivity-package-whitelist.txt",
+    sub_dir: "permissions",
+    src: "background-startactivity-package-whitelist.txt",
+}

2. 实现方案

Index: frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java
===================================================================
--- frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java	(版本 1957)
+++ frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java	(版本 1959)
@@ -1064,6 +1064,14 @@+ " allowed because SYSTEM_ALERT_WINDOW permission is granted.");return false;}
+
+        // don't abort if the callingPackage on the whitelist
+        if (ActivityBackgroundStartCheckUtil.isWhitelistApp(callingPackage, intent)) {
+            Slog.w(TAG, "Background activity start for " + callingPackage
+                    + " allowed because it is on the whitelist.");
+            return false;
+        }
+// anything that has fallen through would currently be abortedSlog.w(TAG, "Background activity start [callingPackage: " + callingPackage+ "; callingUid: " + callingUid
Index: frameworks/base/services/core/java/com/android/server/wm/ActivityBackgroundStartCheckUtil.java
===================================================================
--- frameworks/base/services/core/java/com/android/server/wm/ActivityBackgroundStartCheckUtil.java	(不存在的)
+++ frameworks/base/services/core/java/com/android/server/wm/ActivityBackgroundStartCheckUtil.java	(版本 1959)
@@ -0,0 +1,100 @@
+package com.android.server.wm;
+
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Environment;
+import android.os.Process;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.internal.util.ArrayUtils;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashSet;
+
+public class ActivityBackgroundStartCheckUtil{
+
+    private static String TAG = "ActivityBackgroundStartCheckUtil";
+
+    private static final File GRANT_SYS_APP_LIST_SYSTEM = Environment
+            .buildPath(Environment.getRootDirectory(), "etc", "permissions",
+                    "background-startactivity-package-whitelist.txt");
+
+    private static HashSet<String> mWhitelistAppSet = new HashSet<String>();
+
+    private static String Key[] = {"android", "call"};
+
+    public static boolean isWhitelistApp(String callingPackage, Intent intent){
+        sGetGrantSystemAppFromFile(mWhitelistAppSet, GRANT_SYS_APP_LIST_SYSTEM);
+        Log.d(TAG, "isWhitelistApp callingPackage="+callingPackage);
+        try {
+            String packageName = intent.getComponent().getPackageName();
+            String className = intent.getComponent().getClassName();
+            if (mWhitelistAppSet.contains(callingPackage) ||
+                mWhitelistAppSet.contains(packageName)) {
+                return true;     
+            }
+            for (String key : Key) {
+                if (className.contains(key)) {
+                    return true; 
+                }
+            }
+        } catch (Exception e) {
+            //e.printStackTrace();
+            Log.d(TAG, e.getMessage());
+        }
+        return false;
+    }
+
+    
+    /**
+     * Get removable system app list from config file
+     *
+     * @param resultSet
+     *            Returned result list
+     * @param file
+     *            The config file
+     */
+    private static void sGetGrantSystemAppFromFile(
+            HashSet<String> resultSet, File file) {
+        resultSet.clear();
+        FileReader fr = null;
+        BufferedReader br = null;
+        try {
+            if (file.exists()) {
+                fr = new FileReader(file);
+            } else {
+                Log.d(TAG, "file in " + file + " does not exist!");
+                return;
+            }
+            br = new BufferedReader(fr);
+            String line;
+            while ((line = br.readLine()) != null) {
+                line = line.trim();
+                if (!TextUtils.isEmpty(line)) {
+                    Log.d(TAG, "read line " + line);
+                    resultSet.add(line);
+                }
+            }
+            Log.e(TAG,"GRANT_SYS_APP_LIST_SYSTEM size="+resultSet.size());
+        } catch (Exception io) {
+            Log.d(TAG, io.getMessage());
+        } finally {
+            try {
+                if (br != null) {
+                    br.close();
+                }
+                if (fr != null) {
+                    fr.close();
+                }
+            } catch (IOException io) {
+                Log.d(TAG, io.getMessage());
+            }
+        }
+    }
+}
+
http://www.hkea.cn/news/628513/

相关文章:

  • 璧山集团网站建设互联网推广营销
  • 平面设计网址推荐全国seo搜索排名优化公司
  • 青岛公路建设集团网站东莞排名优化团队
  • 北京公司响应式网站建设价位太原网站建设开发
  • 龙岩网络诈骗通缉人员优化推广方案
  • 专做海外代购的网站设计案例网
  • 漳州网站设计东莞网站制作模板
  • 制作应用的软件成都排名seo公司
  • 北京专业企业网站建设俄罗斯搜索引擎入口 yandex
  • wordpress 怎么改中文网站推广优化价格
  • 南山做网站公司怎么选择企业seo优化服务
  • 什么 电子商务网站建设与管百度招商加盟
  • 南召微网站开发手机优化大师官方版
  • 营销型网站技术特点网站推广网
  • 龙游县住房和城乡建设局网站百度seo优化方法
  • 深圳方维网站建设设计个人网站
  • wordpress 流量站百度应用
  • ps素材网seo在线工具
  • 岳阳网站开发公司html网站模板免费
  • 怎样用模板做网站优化网站技术
  • 全国新型疫情最新情况长沙网站搭建优化
  • 郑州网站建设规划seo建站教程
  • 购物网站 购物车界面如何做百度搜索网
  • 推广网站的图片怎么做外贸平台
  • 新手如何给自己的网站做优化bt种子磁力搜索
  • 成都学校网站制作遵义网站seo
  • d?t网站模版宁波seo在线优化哪家好
  • c做的网站淄博做网站的公司
  • 网站开发制作公司郑州网站建设外包
  • 注册域名用个人还是公司好长沙seo优化排名