package com.example.mockgps; import android.Manifest; import android.annotation.TargetApi; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import java.util.ArrayList; public class StartActivity extends AppCompatActivity { private Button startBtn; private String permissionInfo; private final int SDK_PERMISSION_REQUEST = 127; private ArrayList permissions; private Handler handler; private boolean isStart; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.welcome); startBtn=(Button)findViewById(R.id.startButton); permissions = new ArrayList(); getPersimmions(); isStart=false; Log.d("START",""+permissions.size()); if (permissions.size()==0){ new Handler().postDelayed(new Runnable() { public void run() { if (!isStart){ isStart=true; startMain(); } } }, 2000); } startBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!isStart){ isStart=true; startMain(); } } }); } private void startMain(){ Intent intent=new Intent(StartActivity.this,MainActivity.class); startActivity(intent); StartActivity.this.finish(); } @TargetApi(23) private void getPersimmions() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // ArrayList permissions = new ArrayList(); /*** * 定位权限为必须权限,用户如果禁止,则每次进入都会申请 */ // 定位精确位置 if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { permissions.add(Manifest.permission.ACCESS_FINE_LOCATION); } if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION); } //悬浮窗 // if (checkSelfPermission(Manifest.permission.SYSTEM_ALERT_WINDOW) != PackageManager.PERMISSION_GRANTED) { // permissions.add(Manifest.permission.SYSTEM_ALERT_WINDOW); // } /* * 读写权限和电话状态权限非必要权限(建议授予)只会申请一次,用户同意或者禁止,只会弹一次 */ // 读写权限 if (addPermission(permissions, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { permissionInfo += "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny \n"; } // 读取电话状态权限 // if (addPermission(permissions, Manifest.permission.READ_PHONE_STATE)) { // permissionInfo += "Manifest.permission.READ_PHONE_STATE Deny \n"; // } if (permissions.size() > 0) { requestPermissions(permissions.toArray(new String[permissions.size()]), SDK_PERMISSION_REQUEST); } } } @TargetApi(23) private boolean addPermission(ArrayList permissionsList, String permission) { if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { // 如果应用没有获得对应权限,则添加到列表中,准备批量申请 if (shouldShowRequestPermissionRationale(permission)) { return true; } else { permissionsList.add(permission); return false; } } else { return true; } } @TargetApi(23) @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { // TODO Auto-generated method stub super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }