package com.sunvote.xpadapp.base; import android.Manifest; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.app.FragmentActivity; import android.support.v4.content.ContextCompat; import android.util.DisplayMetrics; import android.view.KeyEvent; import android.view.WindowManager; import android.widget.Toast; import com.sunvote.util.LogUtil; public class BaseActivity extends FragmentActivity { private String TAG = "BaseActivity"; public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; //需要自己定义标志 private static final int READ_EXTERNAL_STORAGE = 101; private static final int WRITE_EXTERNAL_STORAGE = 102; private static final int CAMERA = 103; private static final int ACCESS_COARSE_LOCATION = 103; @Override protected void onCreate(Bundle savedInstanceState) { this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);//关键代码 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT){ // getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // } super.onCreate(savedInstanceState); checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE); checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE); checkSelfPermission(Manifest.permission.CAMERA,CAMERA); checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION,ACCESS_COARSE_LOCATION); getScreenDensity_ByWindowManager(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { LogUtil.i(TAG,"onKeyDown keycode="+keyCode ); switch (keyCode) { case KeyEvent.KEYCODE_BACK: LogUtil.i(TAG,"KEYCODE_BACK"); return true; case KeyEvent.KEYCODE_HOME: return true; } return super.onKeyDown(keyCode, event); } @Override public void onAttachedToWindow() { super.onAttachedToWindow(); } @Override public void onDetachedFromWindow() { super.onDetachedFromWindow(); } @Override public boolean dispatchKeyEvent(KeyEvent event) { //返回true,不响应其他key int keyCode= event.getKeyCode(); LogUtil.i(TAG,"dispatchKeyEvent keycode="+keyCode ); switch (keyCode) { case KeyEvent.KEYCODE_BACK: LogUtil.i(TAG,"KEYCODE_BACK"); return true; case KeyEvent.KEYCODE_HOME: if(event.isLongPress()){ moveTaskToBack(false); } return true; } return true; } public boolean checkSelfPermission(String permission, int requestCode) { LogUtil.i(getClass().getSimpleName(), "checkSelfPermission " + permission + " " + requestCode); if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{permission}, requestCode); return false; } return true; } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case WRITE_EXTERNAL_STORAGE: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { } else { finish(); } break; case READ_EXTERNAL_STORAGE: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { } else { } case CAMERA: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { } else { Toast.makeText(this,"相机权限获取失败!",Toast.LENGTH_SHORT).show(); } } } public void getScreenDensity_ByWindowManager(){ DisplayMetrics mDisplayMetrics = new DisplayMetrics();//屏幕分辨率容器 getWindowManager().getDefaultDisplay().getMetrics(mDisplayMetrics); int width = mDisplayMetrics.widthPixels; int height = mDisplayMetrics.heightPixels; float density = mDisplayMetrics.density; int densityDpi = mDisplayMetrics.densityDpi; // showToast("Screen Ratio: ["+width+"x"+height+"],density="+density+",densityDpi="+densityDpi); // showToast("Screen mDisplayMetrics: "+mDisplayMetrics); LogUtil.i(TAG,"Screen Ratio: ["+width+"x"+height+"],density="+density+",densityDpi="+densityDpi); LogUtil.i(TAG,"Screen mDisplayMetrics: "+mDisplayMetrics); } }