0

我愿意检测设备何时在WIFI上触发本地通知。Android - 检测WIFI结合JobScheduler

大部分答案都包括让BroadcastReceiver侦听wifi.STATE_CHANGE。然而有人指出,由于Android 5.0的jobscheduler提供这样做的更有效的方法:

JobInfo uploadTask = new JobInfo.Builder(mJobId, 
             mServiceComponent /* JobService component */) 
     .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED) 
     .build(); 
JobScheduler jobScheduler = 
     (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); 
jobScheduler.schedule(uploadTask); 

我的应用程序仍然suports 4.1,所以我不知道是否有什么办法,我可以添加的jobscheduler的版本5.0+ ,并将静态广播接收器保留在Manifest中,仅用于较低版本。

回答

0

您可以通过执行禁用静态广播接收机

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
    //broadcast receiver 
}else{ 
    //scheduler 
} 
0

小API开关,

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
    //broadcast receiver 
}else{ 
    //scheduler 
} 

,否则采取这里Writing backwards compatible Android code看看。需要通过在

ComponentName receiver = new ComponentName(context, myReceiver.class); 
PackageManager pm = context.getPackageManager(); 

pm.setComponentEnabledSetting(receiver, 
    PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 
    PackageManager.DONT_KILL_APP); 

,那么你可以验证:

+0

但流程实例期间广播接收机将只有活着,它赢得不像在AndroidManifest.xml中声明的那样是静态的 – htafoya