2016-08-24 2 views
4

Я не знаю, почему это происходит только для одного приложения, потому что я попробовал его в других приложениях, он отлично работает. Но только это приложение всякий раз, когда я запрашиваю разрешение, действие затухает и появляется только диалоговое окно разрешения, тогда нажатие «Разрешить» или «Запретить» закроет действие, и мне нужно его снова открыть. Я подозреваю, что такое поведение происходит в некоторых вариантах по темам или расширяющим типам деятельности, например «AppCompactActivity» или «ActionBarActivity».В диалоговом окне разрешения запроса отключите действие и нажатие любой клавиши закрывает активность

Это мой код

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED&& ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) 
{ 
     ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}, 1); 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) 
{ 
    switch (requestCode) 
    { 
     case 1: 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) 
      { 
       Log.e("Permission","Granted"); 
      } 
      else 
      { 
       Log.e("Permission","Not Granted"); 
      } 

      break; 
    } 
} 

и это тема, но его только подозревает, что тема является причиной

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:windowBackground">@color/primary_orange_lighter</item> 
</style> 

<style name="AppTheme.Splash_Activity" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:statusBarColor">@color/primary_orange_lighter</item> 
</style> 

<style name="AppTheme.Login_Activity" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:statusBarColor">@color/primary_orange_lighter</item> 
</style> 

<style name="AppTheme.Main_Activity" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:statusBarColor">@color/primary_orange_lighter</item> 
</style> 


<style name="StarRatingBar" parent="@android:style/Widget.RatingBar"> 
    <item name="android:progressDrawable">@drawable/star_rating_bar_full</item> 
    <item name="android:minHeight">48dip</item> 
    <item name="android:maxHeight">48dip</item> 
</style> 

<style name="Dialog" parent="@android:style/Theme.Holo.Dialog.NoActionBar"> 
    <item name="android:color">#FFFFFFFF</item> 
    <item name="android:windowBackground">@color/trans_white</item> 
    <item name="android:windowMinWidthMajor">90%</item> 
    <item name="android:windowMinWidthMinor">90%</item> 

</style> 

<style name="ToolBarStyle" parent="AppTheme.Main_Activity"> 
    <item name="android:statusBarColor">@color/primary_orange_lighter</item> 
    <item name="android:background">@color/primary_orange_lighter</item> 
    <item name="android:textColorPrimary">@android:color/white</item> 
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> 
</style> 

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle"> 
    <item name="spinBars">false</item> 
    <item name="color">@android:color/white</item> 
</style> 

<style name="CustomLoadingDialog" parent="SpotsDialogDefault"> 
    <item name="DialogTitleAppearance">@android:style/TextAppearance.Medium</item> 
    <item name="DialogTitleText">Loading</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:background">@color/black</item> 
    <item name="DialogSpotColor">@color/white</item> 
    <item name="DialogSpotCount">5</item> 
</style> 


<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

<style name="SwitchButtonStyle"> 
    <item name="android:paddingLeft">10dp</item> 
    <item name="android:paddingRight">10dp</item> 
    <item name="android:paddingTop">4dp</item> 
    <item name="android:paddingBottom">4dp</item> 
</style> 



<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

и это класс, где запрос происходит

import android.Manifest; 
import android.content.pm.PackageManager; 
import android.support.annotation.NonNull; 
import android.support.v4.app.ActivityCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 

import syncworx.com.kunhadi_driver.R; 
import syncworx.com.kunhadi_driver.classes.Constants; 

public class Test_Activity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED&& ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) 
    { 
     ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}, 1); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) 
{ 
    switch (requestCode) 
    { 
     case 1: 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) 
      { 
       Log.e("Permission","Granted"); 
      } 
      else 
      { 
       Log.e("Permission","Not Granted"); 
      } 

      break; 
    } 
} 
} 
+0

Что мы делаем с файлами кода и тем? добавьте их –

+0

@SohailZahid я добавил их –

+0

OnPause или onstop методы их преодолели –

ответ

7

Наконец, после двух дней борются с этим вопросом я узнал, что это проблема Ну позвольте мне опубликовать первой Проблему происхождения

Intent intent = new Intent(Splash_Activity.this, Test_Activity.class); 
intent .addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
intent .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Как вы видите здесь, когда я начала Test_Activity, который является активностью я прошу в нем я добавляю несколько флагов в намерение, которое его запускает, так что, когда это действие больше не будет видимым, оно будет автоматически уничтожено, и кажется, что запрос на разрешение блокирует активность, как будто он больше не виден, поэтому он уничтожается, а затем за окном разрешения отключается, потому что больше нет активности, а затем нажатие кнопки deny или allow просто отменит диалог и отправит обратный вызов методу onRequestPermissionsResult, но активность неактивна для получения обратного вызова

+0

Я знаю, что это старый вопрос, но как вы решили проблему? Я столкнулся с таким же поведением. – learner

+0

@learner вы прочитали ответ? –

+0

Вы объяснили, что произошло, а не решение. И укажите, где проблема начинается. Кроме того, вы сказали, что активность не живая. – learner