Permissions 启动屏幕前的Android 6.0设置权限
嗨,我有一个从API 18到API 22运行良好的应用程序。 对于新的AndroidAPI23,我正在尝试设置我在清单上设置的检查权限。我在用德克斯特图书馆。现在,我希望启用权限的对话框设置显示在我的启动屏幕之前,当我单击对话框权限上的“确定”时,应用程序保持打开状态,并显示我的简介视图和主视图之后。 我已设置此代码,该代码在启动屏幕运行期间有效,当我为启用权限设置“ok”时,应用程序将关闭,而不是保持打开状态。 这是我的启动屏幕和dexter库代码:Permissions 启动屏幕前的Android 6.0设置权限,permissions,splash-screen,android-6.0-marshmallow,Permissions,Splash Screen,Android 6.0 Marshmallow,嗨,我有一个从API 18到API 22运行良好的应用程序。 对于新的AndroidAPI23,我正在尝试设置我在清单上设置的检查权限。我在用德克斯特图书馆。现在,我希望启用权限的对话框设置显示在我的启动屏幕之前,当我单击对话框权限上的“确定”时,应用程序保持打开状态,并显示我的简介视图和主视图之后。 我已设置此代码,该代码在启动屏幕运行期间有效,当我为启用权限设置“ok”时,应用程序将关闭,而不是保持打开状态。 这是我的启动屏幕和dexter库代码: public class SplashSc
public class SplashScreen extends Activity {
//Set waktu lama splashscreen
private static int splashInterval = 3000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Fabric.with(this, new Answers());
Dexter.initialize(getApplicationContext());
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.splash_fragment);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
View v = findViewById(android.R.id.content);
if (ActivityCompat.checkSelfPermission(getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager
.PERMISSION_GRANTED && ActivityCompat
.checkSelfPermission(getApplicationContext(),
android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager
.PERMISSION_GRANTED) {
MultiplePermissionsListener snackbarMultiplePermissionsListener =
SnackbarOnAnyDeniedMultiplePermissionsListener.Builder
.with((ViewGroup) v.getRootView(),"")
.withOpenSettingsButton("Settings")
.withCallback(new Snackbar.Callback() {
@Override
public void onShown(Snackbar snackbar) {
// Event handler for when the given Snackbar has been dismissed
}
@Override
public void onDismissed(Snackbar snackbar, int event) {
// Event handler for when the given Snackbar is visible
}
})
.build();
Dexter.checkPermissions(snackbarMultiplePermissionsListener, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.GET_ACCOUNTS);
return;
}
Intent i = new Intent(SplashScreen.this, MainActivity.class);
startActivity(i);
//jeda selesai Splashscreen
this.finish();
}
private void finish() {
// TODO Auto-generated method stub
}
}, splashInterval);
};
}
如何在启动屏幕前显示此对话框设置,并在单击“确定”启用权限后保持应用程序打开
谢谢private void displayssplashscreen(){
new Handler().postDelayed(new Runnable()){
/*
*显示带有计时器的启动屏幕。当您
*想展示你的应用程序徽标/公司吗
*/
@凌驾
公开募捐{
意图i=新意图(SplashActivity.this、LoginActivity.class);
星触觉(i);
完成();
}
},溅出时间);
}
私有void setPermissionForM(){
字符串[]权限={
Manifest.permission.WRITE\u外部存储,
Manifest.permission.ACCESS\u位置,
Manifest.permission.ACCESS\u FINE\u位置,
舱单,许可,摄像机,
Manifest.permission.READ\u PHONE\u STATE};
如果(!utils.hasPermissions(此,PERMISSIONS)){
ActivityCompat.requestPermissions(此、权限、权限\全部);
}
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
super.onRequestPermissionsResult(请求代码、权限、授权结果);
Map perms=new HashMap();
//首字母
perms.put(Manifest.permission.WRITE_外部_存储,PackageManager.permission_已授予);
perms.put(Manifest.permission.ACCESS\u位置,PackageManager.permission\u已授予);
perms.put(Manifest.permission.ACCESS\u FINE\u位置,PackageManager.permission\u已授予);
perms.put(Manifest.permission.CAMERA,PackageManager.permission_provided);
perms.put(Manifest.permission.READ_PHONE_状态,PackageManager.permission_已授予);
for(int i=0;i
private void displayssplashscreen(){
new Handler().postDelayed(new Runnable()){
/*
*显示带有计时器的启动屏幕。当您
*想展示你的应用程序徽标/公司吗
*/
@凌驾
公开募捐{
意图i=新意图(SplashActivity.this、LoginActivity.class);
星触觉(i);
完成();
}
},溅出时间);
}
私有void setPermissionForM(){
字符串[]权限={
Manifest.permission.WRITE\u外部存储,
Manifest.permission.ACCESS\u位置,
Manifest.permission.ACCESS\u FINE\u位置,
舱单,许可,摄像机,
Manifest.permission.READ\u PHONE\u STATE};
如果(!utils.hasPermissions(此,PERMISSIONS)){
ActivityCompat.requestPermissions(此、权限、权限\全部);
}
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
super.onRequestPermissionsResult(请求代码、权限、授权结果);
Map perms=new HashMap();
//首字母
perms.put(Manifest.permission.WRITE_外部_存储,PackageManager.permission_已授予);
perms.put(Manifest.permission.ACCESS\u位置,PackageManager.permission\u已授予);
perms.put(Manifest.permission.ACCESS\u FINE\u位置,PackageManager.permission\u已授予);
perms.put(Manifest.permission.CAMERA,PackageManager.permission_provided);
perms.put(Manifest.permission.READ_PHONE_状态,PackageManager.permission_已授予);
for(int i=0;iprivate void displaySplashScreen() {
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
Intent i = new Intent(SplashActivity.this, LoginActivity.class);
startActivity(i);
finish();
}
}, SPLASH_TIME_OUT);
}
private void setPermissionForM() {
String[] PERMISSIONS = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.CAMERA,
Manifest.permission.READ_PHONE_STATE};
if (!utils.hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Map<String, Integer> perms = new HashMap<String, Integer>();
// Initial
perms.put(Manifest.permission.WRITE_EXTERNAL_STORAGE, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.ACCESS_COARSE_LOCATION, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.CAMERA, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.READ_PHONE_STATE, PackageManager.PERMISSION_GRANTED);
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
if (perms.get(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
// All Permissions Granted
displaySplashScreen();
} else {
// Permission Denied
Toast.makeText(SplashActivity.this, "Some Permission is Denied", Toast.LENGTH_SHORT)
.show();
}
}