मैं एंड्रॉइड लॉलीपॉप के साथ आने वाले नए जोसेड्यूलर एपीआई को आजमा रहा हूं। मैंने अभी तक 6000 मिलीसेकंड की देरी के साथ सफलतापूर्वक निर्माण और नौकरी चलाने में कामयाब रहा है, बिना किसी समस्या के नेटवर्क आवश्यकताएं।एंड्रॉइड जॉबशेड्यूलर - एक सतत नौकरी नहीं बना सकता
हालांकि, मैंने सेटपर्सिड (सत्य) फ़ंक्शन का उपयोग करके एक ही नौकरी को जारी रखने की कोशिश की है। जैसे ही जॉब बिल्ड() फ़ंक्शन को कॉल किया जाता है, अब यह कहने में विफल रहता है कि मुझे मेनिफेस्ट फ़ाइल में RECEIVED_BOOT_COMPLETED अनुमति की आवश्यकता है।
लेकिन मैं अनुमति जोड़ लिया है:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.android" >
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
मैं पहले भी काम करता है, तो ऐप को अनुमति पंजीकृत है को देखने के लिए जोड़ा जाता है निम्नलिखित कोड जोड़ लिया है:
PackageManager pm = context.getPackageManager();
int hasPerm = pm.checkPermission(Permission.RECEIVE_BOOT_COMPLETED,
context.getPackageName());
if (hasPerm == PackageManager.PERMISSION_GRANTED)
{
// Goes into here every time
}
हालांकि, जब नौकरी बनाई गई है मुझे निम्न त्रुटि मिलती है:
java.lang.IllegalArgumentException: Error: requested job be persisted without holding RECEIVE_BOOT_COMPLETED permission.
मेरा कोड बनाने और जोड़ने के लिए वह JobSchedular को नौकरी:
ComponentName serviceComponent = new ComponentName(getApplicationContext(), MyJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(1, serviceComponent)
.setMinimumLatency(6000)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPersisted(true);
JobScheduler jobScheduler = (JobScheduler) getApplicationContext().getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
मेरे JobService प्रकट घोषणा:
<service
android:name=".service.MyJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true" >
</service>
अगर मैं कुछ और गलत है कि किसी को देखा जा सकता है कर रहा हूँ तो मैं सोच रहा हूँ। केवल एक चीज जिसे मैं ध्यान में रखूंगा, इससे कोई फर्क पड़ता है कि कोड एक इंटेंट सेवा में चलाया जाता है, इसलिए मुझे आश्चर्य है कि यह एक कारण हो सकता है कि जॉबशेड्यूलर को अनुमति क्यों नहीं मिल रही है।
@RajiithAttapattu आप अनुप्रयोग –
रीबूट पुनः इंस्टॉल करना होगा द्वारा बताया गया है मेरे लिए समस्या हल हो जाती। ऐप को पुनर्स्थापित करने की कोई ज़रूरत नहीं है। – Stanislav