安卓的思路和iOS的思路一样,都是在原生端完成登录后,跳转到react-native的页面。
为此,我们首先要了解安卓的两种常用的界面跳转方式。(若已熟悉安卓的界面跳转可忽略此步)
1.安卓两种常用的界面跳转
1.1、Intent
Intent适合Activity与Activity之间的跳转,按返回键可以直接返回前一页面
缺点:需要到Manifest注册Activity
1.2、setContentView
适合同一Activity里的不同View之间跳转
优点:按返回键不会返回到前一页面,需要自己添加按键监听代码来实现
参考:blog.csdn.net/mrlixirong/article/details/6783092
本例子用的是第一种方式:Intent的Activity与Activity之间的跳转。
2.根据一登开发者文档配置项目
在Android Studio 中打开你的react-native项目中的安卓项目,并根据一登开发者文档配置SDK的依赖和一些相关的信息,一登安卓开发者文档:www.superid.me/developer/document-android/android_quickstart.html
这里只需要做到文档的第五部即可,第六步登录的Activity待会自己写一个登录的Activity,再把刷脸登录方法放进去。
3.实现刷脸登录
3.1简单了解安卓的启动过程
刚创建的react-native项目中安卓项目有两个Activity:
其实安卓程序的入口必须是某个Activity,也就是说必定是这两个中的其中一个,这个Activity从程序一启动就引领着程序进入来react-native页面。但是我们不希望这样,我们希望的是先进入一登的登录页面,在进去react-native的页面。所以我们需要修改程序一开始进入的页面,也就是进入我们即将需要创建的LoginActivit。
我们再来看看AndroidMainfest.xml文件
从配置文件可以看的,MainActivity中配置了一个intent-filter,其中又一个关键字是Main,也就是说这个Activity是程序的入口,相当于c程序中的main函数一样。接下来我们需要自己创建一个LoginActivity来执行一登的刷脸登录,登录成功后在跳转到react-native页面(MainActivity)中。
3.2创建LoginActivity
LoginActivity的代码:
package com.qqlogin;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.isnc.facesdk.SuperID;
import com.isnc.facesdk.common.Cache;
import com.isnc.facesdk.common.SDKConfig;
public class LoginActivity extends AppCompatActivity{
Button loginBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
SuperID.initFaceSDK(this);
SuperID.setDebugMode(true);
loginBtn = (Button)findViewById(R.id.loginBtn);
loginBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
SuperID.faceLogin(LoginActivity.this);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (resultCode) {
case SDKConfig.LOGINSUCCESS:
String openid = Cache.getCached(LoginActivity.this, SDKConfig.KEY_OPENID);
String userInfo = Cache.getCached(LoginActivity.this, SDKConfig.KEY_APPINFO);
// SuperID.faceLoginWithPhoneUid( LoginActivity.this, "13420120434", "suyue", openid, userInfo);
Intent intent = new Intent(LoginActivity.this,
MainActivity.class);
startActivity(intent);
finish();
Toast.makeText(LoginActivity.this, "你好啊老铁!!!", Toast.LENGTH_SHORT).show();
break;
case SDKConfig.LOGINFAIL:
Toast.makeText(LoginActivity.this, "滚吧!!!", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(LoginActivity.this, "滚吧!!!", Toast.LENGTH_SHORT).show();
break;
}
}
}
其实。LoginActivity中就添加来一个按钮,点击进入一登的刷脸登录页面。
activity_login.xml代码如下:
3.3将LoginActivity设置为程序进来的第一个Activity
打开AndroidMainFest.xml配置如下Activity:
可以看到,此时的Main在LoginActivity中,即程序开始时先进入我们写好的登录页面。