0
点赞
收藏
分享

微信扫一扫

Android隐藏活动启动器 - 一键创建应用快捷方式

Activity Launcher

Activity Launcher 是一款功能强大的Android应用程序,专门用于启动隐藏的系统活动并为已安装的应用创建桌面快捷方式。

功能特性

  • 隐藏活动启动: 访问和启动Android系统中隐藏的活动界面
    • 快捷方式创建: 为任何已安装的应用程序创建桌面快捷方式
    • 多语言支持: 完整的国际化支持,通过Crowdin平台进行翻译协作
    • 双平台分发: 同时提供F-Droid开源市场和Google Play商店版本
    • 权限管理: 支持Home screen shortcuts权限配置

安装指南

系统要求

  • Android 5.0及以上版本
    • 需要授予"主屏幕快捷方式"权限

安装方式

F-Droid商店安装:

# 通过F-Droid商店获取开源版本
访问 https://f-droid.org/packages/de.szalkowski.activitylauncher/

Google Play商店安装:

# 通过Google Play获取专业版本
访问 https://play.google.com/store/apps/details?id=de.szalkowski.activitylauncher.pro

权限配置

如果快捷方式无法创建,请确保已授予相应权限:

  1. 进入设置 -> 应用 -> 管理应用 -> Activity Launcher
    1. 选择"其他权限" -> "主屏幕快捷方式"
    1. 启用该权限

使用说明

基本使用

安装后打开应用,您将看到:

  • 所有已安装应用程序列表
    • 每个应用可用的活动和服务
    • 长按任何活动即可创建桌面快捷方式

创建快捷方式示例

// 通过Activity Launcher创建的快捷方式实际上是深度链接
// 可以直接启动应用的特定功能界面
Intent shortcutIntent = new Intent();
shortcutIntent.setClassName("package.name", "activity.class.name");

多语言支持

应用支持多种语言翻译,翻译贡献通过Crowdin平台进行:

# 参与翻译项目
访问 https://crowdin.com/project/ActivityLauncher

核心代码

字符串资源解析

def parse_strings_resources(filename):
    """解析XML字符串资源文件"""
    with open(filename, "r") as fd:
        dom = parse_xml(fd)
    result = dict()
    for element in dom.childNodes[0].getElementsByTagName("string"):
        key = element.attributes.getNamedItem("name").value
        value = element.childNodes[0].data
        result[key] = value
    return result

多语言资源加载

def load_string_resources():
    """加载所有多语言字符串资源"""
    regex = re.compile("-(.*)\/")
    strings = dict()

    for fname in glob("ActivityLauncherApp/src/main/res/values-*/strings.xml"):
        code = next(regex.finditer(fname))[1].split("-")
        if len(code) > 1:
            code[1] = code[1][1:]

        resources = parse_strings_resources(fname)
        strings[tuple(code)] = {
            "shortDescription": resources["short_description"],
            "title": resources["app_name"],
        }
    
    return strings

Google Play商店列表更新

def update_listings(service, strings):
    """更新Google Play商店的应用列表信息"""
    # 准备编辑请求
    edit_request = service.edits().insert(body={}, packageName=PACKAGE_NAME)
    result = edit_request.execute()
    edit_id = result["id"]

    # 处理所有描述文件
    regex = re.compile("-(.*)\.")
    for fname in glob("descriptions/description-*.txt"):
        code = next(regex.finditer(fname))[1].split("-")
        if len(code) > 2 or code[0] == "xxx":
            continue

        with open(fname, "r") as fd:
            fullDescription = fd.read()

        doc = find_strings(code, strings)
        doc["fullDescription"] = fullDescription

        # 更新商店列表
        service.edits().listings().update(
            editId=edit_id, 
            packageName=PACKAGE_NAME, 
            language="-".join(code), 
            body=doc
        ).execute()
举报

相关推荐

0 条评论