Unity与Android交互(一):在Android App中加载Android Library中的Activity

开发环境:Android Studio 2.3.3

这篇文章是作为UnityAndroid交互系列的第一篇,只讲解如何在Android App中加载一个Android Library中的Activity,并传递参数。在这之前,你需要了解Android Application开发基础。网上有很多入门的Android开发教程。 我们先新建一个Android App工程,命名为AndroidApp,使用Empty Activity作为主Activity。 在菜单栏中点击 File > New > New Module ,在弹出的对话框中选择 Android Library,并命名为AndroidLib,在 Android Studio 左侧的 Project 面板中,右键点击 androidlib ,并选择 New > Activity > Empty Activity ,将新建的 Activity 命名为 LibActivity 以作区分。

我们将 LibActivity 中的 TextViewid 改为 lib_textviewtext 改为“这是Android LibraryActivity”并添加一个 idlib_button 的按钮, text 改为“关闭并传回参数:456”。 在 Project 面板中,右键点击 app ,打开 Open Module Settings ,并在 Dependencies 选项卡中,点击右边的加号,选择 :androidlib ,之后点击 OK 。这时便可以从 App 中调用 Library 中的 Activity 了。

MainActivity 添加按钮的 click 事件,用于打开 Android Library 中的 Activity ,在 OnCreate 中加入如下代码:

1
2
3
4
5
6
7
8
9
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,com.test.androidlib.LibActivity.class);
String message = "123";
intent.putExtra("com.test.androidapp.message",message);
startActivityForResult(intent,1);
}
});

上面的代码用于启动 Android Library 中的 LibActivity 并传递了参数 123 ,参数名为 com.test.androidapp.message (官方推荐参数名前加包名以示区分),值为 123 。 我们需要在 MainActivity 中接收由 LibActivity 返回的数据,在类中加入如下代码:

1
2
3
4
5
6
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
TextView main_textview = (TextView) findViewById(R.id.main_textview);
main_textview.setText(data.getStringExtra("com.test.androidlib.message"));
}

之后在 LibActivity 中接收传递的参数并显示在 TextView 中,并为关闭按钮添加事件并回传参数 456 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lib);

Intent intent = getIntent();
String message = intent.getStringExtra("com.test.androidapp.message");
TextView lib_textview = (TextView) findViewById(R.id.lib_textview);
lib_textview.setText(message);

Button button = (Button) findViewById(R.id.lib_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
String message = "456";
intent.putExtra("com.test.androidlib.message",message);
setResult(1,intent);
finish();
}
});
}

至此我们就完成在 Android App 中加载一个 Android Library 中的 Activity ,并进行参数传递。目前我们是在 App 项目中新建了一个 Android Library ,我们也可以将 Android Library 导出为 aar 包,并通过 New Module > Import .JAR/.AAR Package 来加入到项目中。 如果在文中发现了 BUG ,或发现某些地方写的不够清楚,欢迎在评论中告诉我,我会完善。

项目Git地址:https://gitee.com/trlanfeng/UnityAndroid/