相机(Camera)图标缺失

有些低内存的手机或终端首次开机初始化检测慢,概率性会导致一个问题:首次开机时未检测到Camera, 当系统首次启动完成后, 会去检测Camera数目, 如果没有检测到Camera, 会disable Camera的应用及入口, 导致camera的图标丢失。但是呢,相机又是好的,,这可如何是好啊。

第一种方法,恢复出厂设置,恢复出厂设置之后图标是会出现的,但是客户可不会接受这种方式啊,用户哪里知道你的相机是好的呢?所以啊就得用第二种方式了。

第二种方式,去除"检测无Camera时禁用camera"这个机制:

在alps/vendor/mediatek/proprietary/packages/apps/Camera/src/com/android/camera/DisableCameraReceiver.java(这个具体使用那个Camera apk就在哪个位置)这个类中有关于禁用Camera的逻辑:

@Override
    public void onReceive(Context context, Intent intent) {
        // Disable camera-related activities if there is no camera.
        boolean needCameraActivity = FeatureSwitcher.isOnlyCheckBackCamera() ? hasBackCamera()
                : hasCamera();

        if (!needCameraActivity) {
            Log.d(TAG, "disable all camera activities");
            for (int i = 0; i < ACTIVITIES.length; i++) {
                disableComponent(context, ACTIVITIES[i]);
            }
        }

        // Disable this receiver so it wont run again.
        disableComponent(context, "com.android.camera.DisableCameraReceiver");
    }

将其注释掉就可以去掉这个逻辑了。但是去掉这个逻辑后会出现一个问题:即使相机组件出现了问题,也会有camera的图标,但是点击进去不能拍照。相较来说“相机组件出现了问题,也会有camera的图标,但是点击进去不能拍照”是一个正常的bug,和原来去掉camera相比区别不大,都是不能拍照,只是多了一步“会让用户点击无用应用”的操作,影响不大。

经验分享 程序员 微信小程序 职场和发展