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