Android从一个APP跳转到另一个APP的主界面或某页面,并传递数据

1. Android 从一个 APP 跳转到另一个 APP 主界面

        Intent intent = new Intent(Intent.ACTION_MAIN);
        //前提:知道要跳转应用的包名、类名
        ComponentName componentName = new ComponentName("com.example.hust_twj.secondapp", "com.example.hust_twj.secondapp.MainActivity");
        intent.setComponent(componentName);
        startActivity(intent);

本 Demo 包括 2 个测试的 APP ,FirstApp 主界面有 2 个按钮,分别进入 SecondApp 的主界面和某指定的界面;而SecondApp 主界面仅有一个登陆的按钮,点击该按钮可以进入登陆界面。

从 FirstApp 进入 SecondApp 的主界面跳转截图(代码如上):


这里写图片描述

2. Android 从一个 APP 跳转到另一个 APP 的某 activity

(1) 把要跳转的目标 APP 的指定 activity 暴露出来
在 AnroidManifest 文件中给 activity 节点设置 Android:exported="true",该属性表示当前 activity 能否被另外一个Application 的组件启动,true允许启动,false不允许。默认是false。注意:该属性是四大组件都拥有的。

      <activity
          android:name=".LoginActivity"
          android:exported="true">
      </activity>

(2) 启动/跳转

        Intent intent = new Intent();
        intent.setClassName("com.example.hust_twj.secondapp", "com.example.hust_twj.secondapp.LoginActivity");
        startActivity(intent); 

第一个参数是目标 APP 的包名,第二个参数是目标 APP 的 activity 的全称。如果目标 APP 的 activity 没有暴露入口,则会报权限禁止错误。

从 FirstApp 进入SecondApp 的某指定界面(登陆界面):


这里写图片描述

3. 跳转时使用 Bundle 传递数据

在 FirstApp 中使用 Bundle 传递数据:

  public void go2Main(View view){
        ComponentName componentName = new ComponentName("com.example.hust_twj.secondapp","com.example.hust_twj.secondapp.MainActivity");
        Intent intent = new Intent();
        Bundle bundle = new Bundle();
        bundle.putString("FIRST_APP_KEY", "你好 ,MainActivity");
        intent.putExtras(bundle);
        intent.setComponent(componentName);
        startActivity(intent);
    }

    public void go2Login(View view){
        Intent intent = new Intent();
        intent.setClassName("com.example.hust_twj.secondapp", "com.example.hust_twj.secondapp.LoginActivity");
        Bundle bundle = new Bundle();
        bundle.putString("FIRST_APP_KEY", "你好 ,LoginActivity");
        intent.putExtras(bundle);
        startActivity(intent);
    }

在 SecondApp 中,假如 MainActivity 和 LoginActivity 都有 TextView 用于显示从 FirstApp 中传过来的数据(本 Demo 中没有 TextView ),那么在 MainActivity 和 LoginActivity 中接收数据如下:

        TextView mTextView = (TextView) findViewById(R.id.tv_main);
        Bundle bundle = this.getIntent().getExtras();
        if (bundle != null){ //防止直接启动MainActivity时空指针闪退
            String value = bundle.getString("FIRST_APP_KEY");
            mTextView.setText(value);
        }

至此, APP 间的跳转及传递数据就结束啦~

  • 29
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
好的,以下是一个简单的登录界面跳转页面的示例代码: 1. 在 Android Studio 中创建一个新的项目,并在 app/build.gradle 文件中添加以下依赖项: ``` implementation 'androidx.appcompat:appcompat:1.2.0' ``` 2. 在 res/layout 目录下创建一个名为 activity_login.xml 的布局文件,并添加以下代码: ```xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> <EditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="用户名"/> <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="密码" android:inputType="textPassword"/> <Button android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录"/> </LinearLayout> ``` 3. 在 res/layout 目录下创建一个名为 activity_main.xml 的布局文件,并添加以下代码: ```xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center"> <TextView android:id="@+id/welcome_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="欢迎来到页面!"/> </LinearLayout> ``` 4. 在 LoginActivity.java 文件中添加以下代码: ```java import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends AppCompatActivity { private EditText usernameEditText; private EditText passwordEditText; private Button loginButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); usernameEditText = findViewById(R.id.username); passwordEditText = findViewById(R.id.password); loginButton = findViewById(R.id.login_button); loginButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String username = usernameEditText.getText().toString(); String password = passwordEditText.getText().toString(); if (username.equals("admin") && password.equals("123456")) { Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); } else { Toast.makeText(LoginActivity.this, "用户名或密码错误!", Toast.LENGTH_SHORT).show(); } } }); } } ``` 5. 在 MainActivity.java 文件中添加以下代码: ```java import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView welcomeText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); welcomeText = findViewById(R.id.welcome_text); } } ``` 6. 运行程序,输入用户名和密码,点击登录按钮,应该会跳转到 MainActivity 页面,并显示欢迎文本。 希望这个示例能够帮助你实现登录界面跳转页面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值