【Android Studiio】default activity 原生安卓和uniapp默认启动分析(uniapp添加MainActivity)

news2024/9/20 0:24:18

文章目录

      • 思路:
    • 一、原生安卓
    • 二、uniapp
    • 三、在uni-app项目中,如果你想要加入自定义的MainActivity(例如Android平台)

在这里插入图片描述
在这里插入图片描述
探究方向:找到Default Activity

思路:

  • 在Android开发中,"default activity"这个概念通常指的是应用启动时默认会加载和显示的那个Activity。AndroidManifest.xml文件是Android应用中一个非常重要的文件,它用于声明应用的组件、权限、所需的其他Android组件等。在这个文件中,你可以指定哪个Activity是应用的默认启动Activity。
  • 在AndroidManifest.xml文件中,每个标签代表应用中的一个Activity。要设置默认启动的Activity,你需要在该Activity的<intent-filter>中指定action为android.intent.action.MAIN,并设置category为android.intent.category.LAUNCHER。当设备上的应用启动器(如Launcher应用)查找可以显示在启动器上的活动时,它会查找具有这些intent-filter设置的Activity。

一、原生安卓

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <!--
 android:icon="@mipmap/ic_launcher"
 android:label="@string/app_name"
 android:roundIcon="@mipmap/ic_launcher_round"
 -->
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:roundIcon="@drawable/logo"
        android:supportsRtl="true"
        android:theme="@style/Theme.XXXXXXfX"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
</manifest>

在这里插入图片描述
在这里插入图片描述

二、uniapp

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.simple">

    <application
        android:allowBackup="true"
        android:allowClearUserData="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true">
        <activity
            android:name="io.dcloud.PandoraEntry"
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:hardwareAccelerated="true"
            android:theme="@style/TranslucentTheme"
            android:screenOrientation="user"
            android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="io.dcloud.PandoraEntryActivity"
            android:launchMode="singleTask"
            android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard|smallestScreenSize|screenLayout|screenSize|uiMode"
            android:hardwareAccelerated="true"
            android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"
            android:screenOrientation="user"
            android:theme="@style/DCloudTheme"
            android:windowSoftInputMode="adjustResize">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <action android:name="android.intent.action.VIEW" />
                <data android:scheme=" " />
            </intent-filter>
        </activity>
        <meta-data
            android:name="dcloud_appkey"
            android:value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
    </application>

</manifest>

在这里插入图片描述

进入io.dcloud.PandoraEntry

在这里插入图片描述

三、在uni-app项目中,如果你想要加入自定义的MainActivity(例如Android平台)

从这个自定义的MainActivity跳转到uni-app的默认入口io.dcloud.PandoraEntry,你需要对Android原生代码进行一些修改。uni-app是一个使用Vue.js开发所有前端应用的框架,它可以编译到iOS、Android等多个平台,但涉及到原生层面的修改时,就需要直接操作对应平台的原生代码。

以下是一个基本的步骤说明,如何在Android平台上加入自定义的MainActivity并跳转到io.dcloud.PandoraEntry:

  1. 创建自定义的MainActivity
    首先,在你的Android项目中(通常是android/app/src/main/java/你的包名/目录下),创建一个新的Java类文件,比如命名为MainActivity.java。然后,在这个类中继承自AppCompatActivity或其他适合你的应用的基类,并覆盖onCreate方法。
package 你的包名;

	import android.os.Bundle;
	import androidx.appcompat.app.AppCompatActivity;
	
	public class MainActivity extends AppCompatActivity {
	    @Override
	    protected void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.activity_main); // 如果有布局文件
	
	        // 这里可以添加跳转到PandoraEntry的逻辑
	        // 注意:直接跳转可能需要一些额外的处理,因为PandoraEntry是uni-app的启动入口
	        // 通常不建议直接从这里跳转,而是让PandoraEntry作为应用的入口
	    }
	}
  1. 修改AndroidManifest.xml
    在android/app/src/main/AndroidManifest.xml文件中,你需要将标签的android:name属性从默认的io.dcloud.PandoraEntry更改为你的MainActivity(通常不推荐这么做,因为这可能会破坏uni-app的正常启动流程)。但如果你确实需要这样的跳转,你可以保留PandoraEntry作为入口,然后在MainActivity中通过Intent跳转。

然而,更常见的做法是将MainActivity作为应用启动后的第一个可见页面,并在需要时通过Intent跳转到PandoraEntry。但是,请注意,PandoraEntry是uni-app的启动入口,直接修改它可能会影响应用的正常加载。

  1. 考虑使用Intent跳转
    如果你的目的是在应用的某个阶段从自定义的MainActivity跳转到uni-app的主界面,你可以通过Intent来实现:
Intent intent = new Intent(this, io.dcloud.PandoraEntry.class);
startActivity(intent);

但请注意,io.dcloud.PandoraEntry可能不是直接可用的,因为uni-app的Android打包方式可能会将其封装或隐藏。在这种情况下,你可能需要查找实际生成的入口Activity名称(这通常是一个内部或隐藏的类名),或者使用uni-app提供的API或方法来触发页面跳转。

  1. 注意事项
    直接修改PandoraEntry或将其替换为自定义的MainActivity作为应用入口可能会导致uni-app无法正常工作。
    如果你只是想在应用启动后显示一个自定义的页面,然后跳转到uni-app的主界面,建议使用Intent从自定义页面跳转到uni-app的某个页面,而不是直接操作PandoraEntry。
    始终确保你的修改与uni-app的文档和最佳实践保持一致,以避免不必要的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷粒商城实战记录-虚拟机开启密码认证登录

文章目录 一&#xff0c;虚拟机无法用用户名密码登录二&#xff0c;解决方案1&#xff0c;修改配置2&#xff0c;重启sshd服务3&#xff0c;测试SSH登录注意事项结论 参考文献 一&#xff0c;虚拟机无法用用户名密码登录 当使用Vagrant创建和管理虚拟机时&#xff0c;通常会通…

以太网ICMP测试实验

目录 一.概述 1.1IP协议 1.1.1IP协议简介 1.1.2IP协议首部报文格式 1.2ICMP协议 1.2.1ICMP协议简介 1.2.2ICMP报文格式 二.实验任务 三.模块设计 3.1总体模块设计 3.2ICMP模块设计 3.2.1icmp_rx 模块 3.2.2icmp_tx模块 四.modelsim仿真 4.1icmp_rx模块仿真 4.2i…

完美平替navicat的数据库软件DBeaver,免费开源,功能强大,使用简单

DBeaver Community 是一个免费的跨平台数据库工具&#xff0c;适用于开发人员、数据库管理员、分析师和所有与数据打交道的人。它支持所有流行的 SQL 数据库&#xff0c;如 MySQL、MariaDB、PostgreSQL、SQLite、Apache Family 等 1.到官网下载win版本直接安装 https://dbeav…

从一到无穷大 #32 TimeCloth,云上的快速 Point-in-Time Recovery

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言解决方案FAST FINE-GRAINED PITRLog FilterInter-Record Dependency ResolutionL…

全球氢燃料电池汽车市场规划预测:未来六年CAGR为44.4%

一、引言 随着全球能源转型和环保意识的提升&#xff0c;氢燃料电池汽车作为清洁能源汽车的重要组成部分&#xff0c;其市场潜力日益凸显。本文旨在探索氢燃料电池汽车行业的发展趋势、潜在商机及其未来展望。 二、市场趋势 全球氢燃料电池汽车市场的增长主要受全球环保政策推…

springboot辽B代驾管理系统论文源码调试讲解

2 相关技术 2.1 MySQL数据库 本研究与开发的应用程序在数据操作中难以预料&#xff0c;有时候甚至产生变化。没有办法直接在Word中写数据信息&#xff0c;这不但不安全&#xff0c;并且难以达到应用程序的功能。想要实现所需要的文档存储功能&#xff0c;务必选择专业数据库存…

奥运会Ⅲ--AI风险矩阵

问满屋子的人工智能专家&#xff1a;“我们如何知道我们的人工智能是否安全可靠&#xff1f;”你可能会得到十几个不同的答案&#xff0c;每个答案都比上一个更复杂。似乎不知何故&#xff0c;在 OpenAI 成为地球上增长最快的公司一年零几个月后&#xff0c;每个人都是 LLM&…

CANOpen EMCY紧急报文介绍

什么是CANOpen紧急报文 CANOpen中的Emcy紧急报文用于当设备出现故障或警告时&#xff0c;向其它节点报告故障或警告使用的。如设备某个设备出现过压或过流时&#xff0c;就可以发送紧急报文。 紧急报文的格式 错误代码&#xff1a;是0x1003索引预定义错误字段的内容&#xff…

修改VSCode插件默认安装路径

文章目录 前言VSCode插件默认安装路径添加环境变量先修改路径注意事项 前言 今天发现C盘快满了&#xff0c;只能清理点东西&#xff0c;给C盘腾出的空间出来&#xff0c;结果一看&#xff0c;VSCode的插件目录就占了不少呢。 VSCode插件默认安装路径 C:\Users\{个人用户名}\.…

比较支持向量机、AdaBoost、逻辑斯谛回归模型的学习策略与算法

(1)支持向量机&#xff1a;SVM 是一种监督学习算法&#xff0c;用于分类和回归任务。 学习策略&#xff1a;间隔最大化 算法&#xff1a;最大间隔法、软间隔算法。 参数学习&#xff1a;参数学习过程是要最小化目标函数&#xff0c;通常通过优化算法&#xff08;如SMO&#x…

为什么选择 Baklib 而不是 Salesforce 进行知识库管理

对于希望管理其产品和服务的在线文档或知识库以支持其客户和员工的组织来说&#xff0c;市场上有太多的平台和工具。知识库通过向客户和员工提供重要信息来帮助组织提高生产力。这大致分为客户关系管理或客户服务。 很少有平台能够为销售、客户服务等提供一套服务。Salesforce…

Adobe ColdFusion反序列化漏洞(cve-2017-3066)

目录 概述复现过程修复建议 概述 Adobe ColdFusion&#xff08;直译&#xff1a;冷聚变&#xff09;&#xff0c;是一个动态Web服务器&#xff0c;其CFML&#xff08;ColdFusion Markup Language&#xff09;是一种程序设计语言&#xff0c;类似JSP里的JSTL&#xff08;JSP St…

High Speed Serdes学习笔记

1 并行数据总线&#xff08;Parallel Data Bus&#xff09; 并行数据总线为传统的数据传输方式&#xff0c;存在两个问题&#xff1b; 1>需要大量的I/O引脚 2>必须满足严格的时序要求以保证数据正确传输。 图&#xff1a;两个设备之间的并行数据 2 数据串行化 减少并行…

【学习笔记】Day 2

一、进度概述 1、inversionnet_train_light 试运行——未成功 2、DL-FWI基础入门培训-1,2&#xff0c;以及作业1的完成 二、详情 1、inversionnet_train_light 试运行 在补充完相关依赖后&#xff0c;运行仍有报错 产生原因&#xff1a;这个代码在当时师兄的库中存在…

架构设计前期应该怎么做?

利益干系人分析 利益干系人分析框架 利益干系人 - 投资者 利益干系人 - 监管者 利益干系人 - 构建者&#xff0c;维护者 利益干系人 - 使用者&#xff0c;评估者 利益干系人 - 钱包案例 评估者&#xff1a;用户可以评估好不好用 利益干系人 - 外包系统案例 诉求优先级排序 …

【LeetCode每日一题】盛最多水的容器

思路 标签:双指针&#xff0c;贪心 分析&#xff1a; 首先选两条线为容器的两端&#xff0c;盛水的高度取决于高度小的那条线&#xff0c;此时在两条线中间选一条线&#xff0c;有两种情况&#xff0c;如果区间内某条线比两端高度小的那条线还要小&#xff0c;此时宽度和高度…

UE4-常用快捷键汇总

一.虚幻引擎编辑器快捷键 二.蓝图编辑器快捷键

JAVA项目

目录 一、前言 二、技术介绍 三、项目实现流程 四、论文流程参考 五、核心代码截图 专注于大学生实战开发、讲解和毕业答疑等辅导&#xff0c;获取源码后台 一、前言 在数字化音乐时代&#xff0c;个性化推荐已成为提升用户体验、促进音乐消费的重要手段。为此&#xff0…

mybatis-plus selectPage获取到数据但是total为0

查数据库返回数据&#xff0c;但是total显示为0 这里需要设置分页拦截器 config目录下新建mybatisConfig.java import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.spri…

Airtest精讲Template配置参数

Airtest精讲Template配置参数 今天我们讲一下airtest图像识别中的一个最基本、最常用的一个类Template 一、环境背景 首先我们先看一个非常简单的脚本示例&#xff0c;在AirtestIDE中&#xff0c;显示如图&#xff1a; 在编辑器中点击鼠标右键菜单的‘图片/代码模式切换’&am…