/**
*
@作者
RedWolfChao
*
@时间
2018/2/22 16:38
*
@描述
代码没有很好的弄6.0权限处理 所以在没有授权的情况下, APP会崩溃
*/
public class
MainActivity
extends
AppCompatActivity
implements
DefaultHardwareBackBtnHandler {
private static final int
OVERLAY_PERMISSION_REQ_CODE
=
10001
;
// ReactNative核心类
private
ReactRootView
mReactRootView
;
// ...
private
ReactInstanceManager
mReactInstanceManager
;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
initPermission();
initReactNative();
}
/**
* 初始化ReactNative
*/
private void
initReactNative() {
mReactRootView
=
new
ReactRootView(
this
);
mReactInstanceManager
= ReactInstanceManager.
builder
()
.setApplication(getApplication())
// 此处中文网中有点不一样 中文网中的文档感觉有点儿过时
.setBundleAssetName(
"index.bundle"
)
.setJSMainModuleName(
"index"
)
.addPackage(
new
MainReactPackage())
.setUseDeveloperSupport(BuildConfig.
DEBUG
)
.setInitialLifecycleState(LifecycleState.
RESUMED
)
.build();
// 注意这里的MyReactNativeApp 必须对应 "index.js"中的"AppRegistry.registerComponent()"的第一个参数
mReactRootView
.startReactApplication(
mReactInstanceManager
,
"MyReactNativeApp"
,
null
);
setContentView(
mReactRootView
);
}
@Override
protected void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
if
(requestCode ==
OVERLAY_PERMISSION_REQ_CODE
) {
if
(Build.VERSION.
SDK_INT
>= Build.VERSION_CODES.
M
) {
if
(!Settings.
canDrawOverlays
(
this
)) {
//
TODO
}
}
}
}
/**
* 请求弹窗权限
*/
private void
initPermission() {
if
(Build.VERSION.
SDK_INT
>= Build.VERSION_CODES.
M
) {
if
(!Settings.
canDrawOverlays
(
this
)) {
Intent intent =
new
Intent(Settings.
ACTION_MANAGE_OVERLAY_PERMISSION
,
Uri.
parse
(
"package:"
+ getPackageName()));
startActivityForResult(intent,
OVERLAY_PERMISSION_REQ_CODE
);
}
}
}
@Override
public void
invokeDefaultOnBackPressed() {
super
.onBackPressed();
}
@Override
public void
onBackPressed() {
if
(
mReactInstanceManager
!=
null
) {
mReactInstanceManager
.onBackPressed();
}
else
{
super
.onBackPressed();
}
}
@Override
public boolean
onKeyUp(
int
keyCode, KeyEvent event) {
if
(keyCode == KeyEvent.
KEYCODE_MENU
&&
mReactInstanceManager
!=
null
) {
mReactInstanceManager
.showDevOptionsDialog();
return true
;
}
return super
.onKeyUp(keyCode, event);
}
@Override
protected void
onPause() {
super
.onPause();
if
(
mReactInstanceManager
!=
null
) {
mReactInstanceManager
.onHostPause(
this
);
}
}
@Override
protected void
onResume() {
super
.onResume();
if
(
mReactInstanceManager
!=
null
) {
mReactInstanceManager
.onHostResume(
this
,
this
);
}
}
@Override
protected void
onDestroy() {
super
.onDestroy();
if
(
mReactInstanceManager
!=
null
) {
mReactInstanceManager
.onHostDestroy(
this
);
}
}
}