2016-07-28 22 views
1

こんにちは私は、API 18からAPI 22までうまく動作するアプリを持っています。 新しいAndroid API 23では、私がマニフェストで設定したチェック許可を設定しようとしています。私はDexterライブラリを使用しています。今私は許可を有効にするためのダイアログ設定は、私のスプラッシュ画面の前に表示されていると私は、ダイアログボックスの権限で "ok"をクリックすると、開いたままにして、私のイントロビューとメインビューの後に表示します。 私はスプラッシュ画面の実行中に動作するこのコードを設定しました。 これは、スプラッシュ画面とデクスター・ライブラリーの私のコードです:Android 6.0設定許可beforスプラッシュ画面

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); 

}; 

}

私はスプラッシュスクリーンの前に、このダイアログの設定を表示し、アクセス権を有効にするには、[OK]をクリックした後のアプリ開いたままにできますか?

おかげ

+0

あなたはすべてのソリューションを持ってください。投稿してください –

答えて

0
private 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(); 
      } 

} 
関連する問題