0

Je travaille sur l'application de verrouillage de l'application. Si installé cette application en mode kitkat verrouillage de l'application de l'appareil et son fonctionne parfaitement. En marshmallow | (6.0) version dispositif initialement application fonctionne, si nous redémarrons le dispositif de verrouillage de l'application n'est pas de travail, les applications verrouillées sont ouvertes sans demander de mot de passe. Si nous venons d'entrer dans l'application (application App Lock) et quitter l'application fonctionne parfaitement. Cette fois, il demande un mot de passe.Après le redémarrage de l'appareil, mon application locker ne fonctionne pas sur le périphérique Android guimauve

public class StartupServiceReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ 
     if (AppLockerPreference.getInstance(context).isAutoStart()){ 
      if (AppLockerPreference.getInstance(context).isServiceEnabled()){ 
       context.startService(new Intent(context, DetectorService.class)); 
      }else{ 
       AppLockerPreference.getInstance(context).saveServiceEnabled(false); 
      } 
     } 
     return; 
    }else if (AppLockerPreference.getInstance(context).isServiceEnabled()){ 
     context.startService(new Intent(context, DetectorService.class)); 
    } 
} 
} 


public class AppLockerPreference implements OnSharedPreferenceChangeListener { 
Context mContext; 




public boolean isAutoStart() { 
    Log.d("AMK","AppLockerPreference1--->"+mApplicationList.length); 
    return mAutoStart; 
} 

public boolean isServiceEnabled() { 
    Log.d("AMK","AppLockerPreference2--->"+mApplicationList.length); 
    return mServiceEnabled; 
} 
public void saveServiceEnabled(boolean serviceEnabled) { 
    mServiceEnabled = serviceEnabled; 
    mPref.edit().putBoolean(PREF_SERVICE_ENABLED, mServiceEnabled); 
} 
public String[] getApplicationList() { 


    Log.d("AMK","AppLockerPreference3--->"+mApplicationList.length); 
    return mApplicationList; 
} 
public void saveApplicationList(String[] applicationList) { 
    mApplicationList = applicationList; 
    String combined = ""; 
    for (int i=0; i<mApplicationList.length; i++){ 
     combined = combined + mApplicationList[i] + ";"; 
    } 
    mPref.edit().putString(PREF_APPLICATION_LIST, combined).commit(); 
} 

private static final String PREF_SERVICE_ENABLED = "service_enabled"; 
private static final String PREF_APPLICATION_LIST = "application_list"; 
private static final String PREF_AUTO_START = "start_service_after_boot"; 
private static final String PREF_PASSWORD = "password"; 

/** 
* Section for singleton pattern 
*/ 
private SharedPreferences mPref; 
private AppLockerPreference(Context context) { 
    mPref = PreferenceManager.getDefaultSharedPreferences(context); 
    mPref.registerOnSharedPreferenceChangeListener(this); 
    reloadPreferences(); 
} 
private void reloadPreferences() { 
    mServiceEnabled = mPref.getBoolean(PREF_SERVICE_ENABLED, true); 

    mApplicationList = mPref.getString(PREF_APPLICATION_LIST, "").split(";"); 



    Log.d("AMK","selectd apps--->"+mApplicationList); 



    mAutoStart = mPref.getBoolean(PREF_AUTO_START, true); 
    mPassword = mPref.getString(PREF_PASSWORD, "2468"); 
    if (mPref.getBoolean("relock_policy", true)){ 
     try{ 
      mRelockTimeout = Integer.parseInt(mPref.getString("relock_timeout", "-1")); 
     }catch(Exception e){ 
      mRelockTimeout = -1; 
     } 
    }else{ 
     mRelockTimeout = -1; 
    } 
} 

private static AppLockerPreference mInstance; 
public static AppLockerPreference getInstance(Context context){ 
    return mInstance == null ? 
      (mInstance = new AppLockerPreference(context)) : 
       mInstance; 
} 

private boolean mServiceEnabled, mAutoStart; 
private String[] mApplicationList; 
private String mPassword; 
private int mRelockTimeout; 

public int getRelockTimeout(){ 
    return mRelockTimeout; 
} 

public String getPassword() { 
    return mPassword; 
} 
public void savePassword(String password) { 
    mPassword = password; 
    mPref.edit().putString(PREF_PASSWORD, password); 
} 

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
     String key) { 
    reloadPreferences(); 
} 
} 

Pourriez-vous s'il vous plaît aidez-moi.

+0

vous avez '' '' dans votre fichier manifeste? – Grisgram

+0

Oui.J'ai cette autorisation. – Narendra

+0

donnez-nous votre manifeste –

Répondre

0

vérifier si l'appareil est guimauve et de donner des autorisations

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.MARSHMALLOW) { 
    // only for marshmallow and newer versions 
} 
+0

Ne fonctionne pas ... Après le redémarrage de l'appareil se verrouillé la longueur de l'application. Si nous venons d'entrer dans l'application (application App Lock) et quitter l'application son fonctionnement parfait. Cette fois, il demande un mot de passe. – Narendra

0

ci-dessous Android 6.0 (MARSHMALLOW) son seul nécessaire de mentionner toutes les autorisations dans votre fichier manifeste, alors que dans la guimauve et au-dessus des versions toutes les autorisations sont accordées par l'utilisateur, pour cela vous devez afficher popUp pour les autorisations. Comme si vous souhaitez utiliser les autorisations suivantes puis faire le codage comme celui-ci:

public void checkForMarshmallowPermission() { 

    for (int i = 0; i < 3; i++) { 
     switch (i) { 
      case 0: 
       isPermissionGiven(Manifest.permission.ACCESS_COARSE_LOCATION, PERMISSION_LOCATION_COARSE); 
       break; 

      case 1: 
       isPermissionGiven(Manifest.permission.ACCESS_FINE_LOCATION, PERMISSION_LOCATION_FINE); 
       break; 

      case 2: 
       isPermissionGiven(Manifest.permission.READ_PHONE_STATE, PERMISSION_READ_PHONE_STATE); 
       break; 
     } 
    } 

} 


private boolean isPermissionGiven(String permissionName, int requestCode) { 
     LoggerUtility.e(TAG, "isPermissionGiven :-" + permissionName); 
     if (ContextCompat.checkSelfPermission(LoginActivity.this, 
       permissionName) 
       != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(YourActivity.this, 
        new String[]{permissionName}, 
        requestCode); 
      return false; 
     } 
     return true; 
    } 

surchargeons aussi la méthode onRequestPermissionsResult dans votre activité:

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     LoggerUtility.e(TAG, "onRequestPermissionsResult :-" + requestCode); 
     switch (requestCode) { 
      case PERMISSION_LOCATION_FINE: 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        // permission was granted, yay! Do the 
        // contacts-related task you need to do. 
        isPermissionGiven(Manifest.permission.READ_PHONE_STATE, PERMISSION_READ_PHONE_STATE); 

       } else { 
        // permission denied, boo! Disable the 
        // functionality that depends on this permission. 
       } 
       break; 

      case PERMISSION_LOCATION_COARSE: 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        // permission was granted, yay! Do the 
        // contacts-related task you need to do. 
        isPermissionGiven(Manifest.permission.READ_PHONE_STATE, PERMISSION_READ_PHONE_STATE); 

       } else { 

        // permission denied, boo! Disable the 
        // functionality that depends on this permission. 
       } 
       break; 

      case PERMISSION_READ_PHONE_STATE: 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        // permission was granted, yay! Do the 
        // contacts-related task you need to do. 


       } else { 

        // permission denied, boo! Disable the 
        // functionality that depends on this permission. 
       } 
       break; 
     } 
    } 
+1

Dans cette application, je n'ai que et Après le redémarrage de l'appareil se verrouillé la longueur des applications. Si nous venons d'entrer dans l'application (application App Lock) et quitter l'application son fonctionnement parfait. Cette fois, il demande un mot de passe. – Narendra

+0

"Après avoir redémarré l'appareil en obtenant la longueur des applications verrouillées" - n'a pas obtenu cette ligne. Aidez-moi à donner un bref à ce sujet. –

+0

ce que nous avons verrouillé des applications, cette longueur arrive après le redémarrage de l'appareil. Log.d ("AMK", "AppLockerPreference1 --->" + mApplicationList.length); – Narendra