uni-app安装隐藏,通过别的app唤醒

发布于 1周前 作者 caililin 来自 Uni-App

uni-app安装隐藏,通过别的app唤醒

希望能将uniapp打包安装后隐藏,通过别的app唤醒

3 回复

有方案告诉我兄弟


原生有这种方法,不过貌似有些厂商做了检测,所以隐藏不了了

在uni-app中实现应用的隐藏和通过其他应用唤醒,通常需要涉及到操作系统的相关权限和API调用。以下是一个基于Android平台的实现思路及代码案例。iOS平台的实现会有所不同,但总体思路类似。

Android平台实现思路

  1. 隐藏应用:在Android中,隐藏应用通常是指让应用不在最近任务列表中显示,这可以通过修改Activity的属性来实现。

  2. 通过其他应用唤醒:这通常涉及到广播接收器(BroadcastReceiver)或者服务(Service)的使用,以及Intent的发送和接收。

代码案例

1. 隐藏应用

manifest.json中配置AndroidManifest.xml,为需要隐藏的Activity添加android:excludeFromRecents="true"属性:

"android": {
    "permissions": [
        // 其他权限
    ],
    "distribute": {
        "sdkConfigs": {}
    },
    "androidManifest": {
        "application": {
            "activities": [
                {
                    "androidName": ".MainActivity",
                    "excludeFromRecents": true
                }
            ]
        }
    }
}

2. 通过其他应用唤醒

发送Intent的应用(App A)

// 假设这是App A中的代码,使用uni-app的plus.android模块发送广播
const context = plus.android.runtimeMainActivity();
const intent = new plus.android.intent.Intent('com.example.ACTION_WAKEUP');
intent.putExtra('data', 'Hello from App A');
context.sendBroadcast(intent);

接收Intent的应用(uni-app应用)

manifest.json中注册广播接收器:

"android": {
    "permissions": [
        "android.permission.RECEIVE_BOOT_COMPLETED"
    ],
    "distribute": {
        "sdkConfigs": {}
    },
    "androidManifest": {
        "application": {
            "receivers": [
                {
                    "androidName": "com.example.MyBroadcastReceiver",
                    "intentFilter": [
                        {
                            "action": "com.example.ACTION_WAKEUP"
                        }
                    ]
                }
            ]
        }
    }
}

广播接收器实现(MyBroadcastReceiver.java)

package com.example;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String data = intent.getStringExtra("data");
        Toast.makeText(context, "Received: " + data, Toast.LENGTH_SHORT).show();
        // 在这里处理唤醒逻辑,比如启动MainActivity
    }
}

注意事项

  • 确保广播接收器类路径与manifest.json中配置的一致。
  • 对于iOS平台,需要使用不同的机制,如URL Scheme或自定义URL Type。
  • 由于Android 8.0(API级别26)及更高版本对后台服务和广播接收器的限制,可能需要在前台服务或JobScheduler中处理这些任务。

以上代码是一个基本的实现框架,根据具体需求可能需要进一步调整和优化。

回到顶部