2016-08-12 2 views
0

Я использую ACTION_USER_PRESENT широковещательный приемник в своем приложении, . Моя проблема в том, что я получаю BroadCastReceiver только тогда, когда мое приложение находится в состоянии паузы.ACTION_USER_PRESENT не работает, когда приложение не находится в фоновом режиме

Вот мой манифест:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 


<receiver 
      android:name=".utils.receivers.ReminderBroadcastReceiver" 
      android:enabled="true" 
      android:exported="true" /> 
     <receiver android:name=".utils.receivers.UserPresentBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.USER_PRESENT" /> 
      </intent-filter> 
     </receiver> 

Мой приемник:

public class UserPresentBroadcastReceiver extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context context, Intent intent) { 

     /*Sent when the user is present after 
     * device wakes up (e.g when the keyguard is gone) 
     * */ 

     // MY STUFF - which works when my app is on paused state, but not when it is closed 

    } 

} 

бегаю на Маршмэллоу 6.0

Любая помощь?

+0

У вас есть разрешение на выполнение? –

+0

нет, у меня не было никаких запросов на разрешение. –

+0

Я создаю события в календаре, эта вещь также не запрашивает permssion, но закончилась исключением из PERMISSION DENIAL, если я даю разрешение вручную, он отлично работает ... но в этом случае такой возможности нет! –

ответ

0

Получение разрешения на выполнение во время работы над Marshmallo 6.0 или greator.

public class RuntimePermission extends AppCompatActivity { 

     private static final int REQUEST_RUNTIME_PERMISSION = 123; 

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

      if (CheckPermission(RuntimePermission.this, Manifest.permission.READ_PHONE_STATE)) { 
       // you have permission go ahead 

      } else { 
       // you do not have permission go request runtime permissions 
       RequestPermission(RuntimePermission.this, Manifest.permission.READ_PHONE_STATE, REQUEST_RUNTIME_PERMISSION); 
      } 
     } 

     @Override 
     public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) { 

      switch (permsRequestCode) { 

       case REQUEST_RUNTIME_PERMISSION: { 
        if (grantResults.length > 0 
          && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
         // you have permission go ahead 

        } else { 
         // you do not have permission show toast. 
        } 
        return; 
       } 
      } 
     } 

     public void RequestPermission(Activity thisActivity, String Permission, int Code) { 
      if (ContextCompat.checkSelfPermission(thisActivity, 
        Permission) 
        != PackageManager.PERMISSION_GRANTED) { 
       if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
         Permission)) { 
       } else { 
        ActivityCompat.requestPermissions(thisActivity, 
          new String[]{Permission}, 
          Code); 
       } 
      } 
     } 

     public boolean CheckPermission(Context context, String Permission) { 
      if (ContextCompat.checkSelfPermission(context, 
        Permission) == PackageManager.PERMISSION_GRANTED) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
    } 
+0

'но в итоге с исключением из DERMIAL PERMISSION DENIAL' можно добавить здесь полный журнал? –

+0

Теперь он работает, я получил искру из комментария вашего предыдущего ответа: «Я пользуюсь телефоном huawei !!!» –

+0

@bachu это здорово, если он поможет рассмотреть отметку и проголосовать за счастливое кодирование :) –

Смежные вопросы