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.provider.Settings; 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.Window; 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 = 104; @Override protected void onCreate(Bundle savedInstanceState) { //无title requestWindowFeature(Window.FEATURE_NO_TITLE); //全屏 getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutParams. FLAG_FULLSCREEN); 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); checkPermission(); /*boolean p = 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(); } public void checkPermission() { boolean isGranted = true; if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //如果没有写sd卡权限 isGranted = false; } if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { isGranted = false; } if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { isGranted = false; } if (ActivityCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { } if (!Settings.System.canWrite(this)) { /*Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS);*/ } if (!isGranted) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission .ACCESS_FINE_LOCATION, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, Manifest.permission.VIBRATE, Manifest.permission.RECORD_AUDIO, Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA}, 102); } } } @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; } 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; LogUtil.i(TAG,"Screen Ratio: ["+width+"x"+height+"],density="+density+",densityDpi="+densityDpi); LogUtil.i(TAG,"Screen mDisplayMetrics: "+mDisplayMetrics); } }