csdnaudience 2022-12-15 17:15
浏览 13
已结题

android11 vnc

1、Android11 把droid vnc apk编译到固件里面,在系统启动时自动启动,vnc已经起来,用vnc viewer远程连接可以连上,但是是黑屏(在本地打开droid vnc获取权限之后vnc viewer可以看到画面但是还是不能控制)。

------希望结果:系统起来之后就可以用vnc viewer连接看到画面并控制系统

2、问题原因:个人觉得是vnc启动的时候vnc没有抓取屏幕的权限和输入的权限所以按照下面方法修改代码:
a、安装时自动获取权限

diff --git a/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index b500e16..864f280 100644
--- a/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -2820,10 +2820,10 @@
                             || upgradedActivityRecognitionPermission != null) {
                         // Before Q we represented some runtime permissions as install permissions,
                         // in Q we cannot do this anymore. Hence upgrade them all.
-                        grant = GRANT_UPGRADE;
+                        grant = GRANT_INSTALL;
                     } else {
                         // For modern apps keep runtime permissions unchanged.
-                        grant = GRANT_RUNTIME;
+                        grant = GRANT_INSTALL;
                     }
                 } else if (bp.isSignature()) {
                     // For all apps signature permissions are install time ones.
@@ -2848,7 +2848,7 @@
                             // to the platform (note: need to only do this when
                             // updating the platform).
                             if (!isNewPlatformPermissionForPackage(perm, pkg)) {
-                                grant = GRANT_DENIED;
+                                grant = GRANT_INSTALL;
                             }
                         }
                     }

b、运行时自动获取权限

class PackageHandler extends Handler {
 
        ......
        void doHandleMessage(Message msg) {
            switch (msg.what) {
               ......
                case POST_INSTALL: {
                    if (DEBUG_INSTALL) Log.v(TAG, "Handling post-install for " + msg.arg1);
 
                    PostInstallData data = mRunningInstalls.get(msg.arg1);
                    final boolean didRestore = (msg.arg2 != 0);
                    mRunningInstalls.delete(msg.arg1);
 
                    if (data != null && data.res.freezer != null) {
                        data.res.freezer.close();
                    }
 
                    if (data != null && data.mPostInstallRunnable != null) {
                        data.mPostInstallRunnable.run();
                    } else if (data != null && data.args != null) {
                        InstallArgs args = data.args;
                        PackageInstalledInfo parentRes = data.res;
                        //注意:主要是这里
                        final boolean grantPermissions =/* (args.installFlags
                                & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0*/true;
                        final boolean killApp = (args.installFlags
                                & PackageManager.INSTALL_DONT_KILL_APP) == 0;
                        final boolean virtualPreload = ((args.installFlags
                                & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0);
                        ......
                    } else if (DEBUG_INSTALL) {
                        // No post-install when we run restore from installExistingPackageForUser
                        Slog.i(TAG, "Nothing to do for post-install token " + msg.arg1);
                    }
 
                    Trace.asyncTraceEnd(TRACE_TAG_PACKAGE_MANAGER, "postInstall", msg.arg1);
                } break;
            }
        }
}

c、配置文件修改

<permission android:name="android.permission.READ_PHONE_STATE"
    android:permissionGroup="android.permission-group.UNDEFINED"
    android:label="@string/permlab_readPhoneState"
    android:description="@string/permdesc_readPhoneState"
-   android:protectionLevel="dangerous" />
+   android:protectionLevel="normal" />
 

<permission android:name="android.permission.RECORD_AUDIO
    android:permissionGroup="android.permission-group.UNDEFINED"
    android:label="@string/permlab_recordAudio"
    android:description="@string/permdesc_recordAudio"
-   android:protectionLevel="dangerous|instant" />
+   android:protectionLevel="normal" />
 



<permission android:name="android.permission.CAMERA"
    android:permissionGroup="android.permission-group.UNDEFINED"
    android:label="@string/permlab_camera"
    android:description="@string/permdesc_camera"
-   android:protectionLevel="dangerous|instant" />
+   android:protectionLevel="normal" />



3、系统启动之后vnc还是黑屏

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月23日
    • 创建了问题 12月15日

    悬赏问题

    • ¥20 visual studio中c语言用ODBC链接SQL SERVER
    • ¥50 AI大模型精调(百度千帆、飞浆)
    • ¥15 非科班怎么跑代码?如何导数据和调参
    • ¥15 福州市的全人群死因监测点死亡原因报表
    • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
    • ¥15 系统2008r2 装机配置推荐一下
    • ¥500 服务器搭建cisco AnyConnect vpn
    • ¥15 悬赏Python-playwright部署在centos7上
    • ¥15 psoc creator软件有没有人能远程安装啊
    • ¥15 快速扫描算法求解Eikonal方程咨询