活动——使用显式Intent

本文介绍如何在Android应用程序中实现从一个活动(Activity)到另一个活动的跳转。通过创建新的EmptyActivity(SecondActivity),并在FirstActivity中设置按钮点击事件来触发跳转。演示了Intent和startActivity方法的具体用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该代码实现在活动——在活动中使用Toast所建立的项目下


建立一个新的Empty Activity,取名为SecondActivity。添加一个button控件
second_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:id="@+id/button_2"
        android:text="Button 2"/>

</LinearLayout>

修改FirstActivity中的点击事件

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });

Intent(Context packageContext, Class <”?> cls):两个参数
- 第一个参数:Context要求提供一个启动活动的上下文
- 第二个参数:Class则是指定想要启动的目标活动

startActivity():专门用于启动活动。


运行结果:
这里写图片描述
点击Button 1 跳转到 SecondActivity活动。
这里写图片描述

### 如何在 Unity 中使用 Android Intent 进行跨应用通信 #### 创建并发送 Intent 对象 为了在 Unity 和其他应用程序之间建立通信,可以创建 `Intent` 并调用其方法来启动目标组件。这通常涉及以下几个方面: 1. **初始化 Java 类** 需要先通过 `AndroidJavaClass` 来访问 Android 的环境变量以及当前活动 (Activity),这是因为在 Unity 插件开发中无法直接操作原生 Activity[^2]。 ```csharp using UnityEngine; public class SendIntentExample : MonoBehaviour { void Start() { using(AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); // ...后续代码... } } } ``` 2. **构建意图对象** 利用获得的上下文信息构造一个新的 `Intent` 实例,并设置动作名称、数据 URI 或者类别等属性以指定接收方和服务类型[^4]。 ```csharp // 构建一个intent, 指定包名和类名作为目标组件 string packageName = "com.example.targetapp"; string className = ".TargetActivity"; var intent = new AndroidJavaObject( "android.content.Intent", new object[] {packageName, className}); intent.Call<AndroidJavaObject>("setAction", "ACTION_NAME"); if (!string.IsNullOrEmpty(dataUrl)) { intent.Call<AndroidJavaObject>( "setData", Uri.Parse(dataUrl)); } // 添加额外参数 intent.Call<AndroidJavaObject>("putExtra", keyName, keyValue); ``` 3. **执行跳转或广播** 当所有的配置完成后就可以根据需求选择合适的方触发该意图了——既可以用来打开另一个 App 内部页面也可以向整个系统发布一条消息让监听的应用作出响应。 ```csharp // 启动 activity currentActivity.Call("startActivity", intent); // 发送有序广播 currentActivity.Call("sendOrderedBroadcast", intent, null); // 发送无序广播 currentActivity.Call("sendBroadcast", intent); ``` 以上就是如何在 Unity 中借助于 C# 调用底层 API 完成基于 Intents 的跨平台通讯机制介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值