2012-03-18 22 views
6

एंड्रॉइड के माध्यम से समय क्षेत्र सेट करने के लिए एंड्रॉइड ओएस अनुमति स्तर "खतरनाक" के साथ "SET_TIME_ZONE" नामक अनुमति प्रदान करता है। क्या किसी को पता है कि इस अनुमति के साथ एक आवेदन दिया गया है, ऐप समय क्षेत्र कैसे निर्धारित कर सकता है?Android

धन्यवाद।

उत्तर

1

समय क्षेत्र की सेटिंग के लिए प्रोग्रामेटिक रूप से आपको तिथि कक्षा का उपयोग करने की आवश्यकता है। इसके संदर्भ दस्तावेज़ here देखें।

आपको setTimeZone()SimpleDateFormat कक्षा का उपयोग करने की आवश्यकता है।

बाद

की सेटिंग समय क्षेत्र के लिए नमूना कोड है अमेरिका

के अनुसार
// First Create Object of Calendar Class 
Calendar calendar = Calendar.getInstance();   
// Now Set the Date using DateFormat Class 
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z"); 
// Finally Set the time zone using SimpleDateFormat Class's setTimeZone() Method 
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); 
+0

आपकी राय में, कोड को काम करना चाहिए यदि एप्लिकेशन में SET_TIME_ZONE अनुमति नहीं है? – Jake

+1

@ जेक: इसे "काम" करना चाहिए। यह सब आपके ऑब्जेक्ट के लिए 'टाइमज़ोन' सेट कर रहा है। यह 'int a = 43' कहने जैसा है, ओएस की परवाह नहीं है। वैश्विक सेटिंग वह है जिसके लिए आपको अनुमति की आवश्यकता है, दूसरा जवाब देखें। – maaartinus

+1

यह उत्तर दिखाता है कि सिस्टम को नहीं, एक SimpleDateFormat उदाहरण पर टाइमज़ोन कैसे सेट करें। धीरज का जवाब देखें। – spaaarky21

14

अपने उद्देश्य प्रणाली के सामान्य समय क्षेत्र बदलने के लिए, तो AlarmManager की setTimeZone() का उपयोग है।

+0

धन्यवाद! यह काम। – herbertD

3

आप कई मायनों में समय क्षेत्र सेट कर सकते हैं:

  1. आप TimeZone.setDefault() उपयोग कर सकते हैं जो केवल मौजूदा प्रक्रिया के लिए समय क्षेत्र बदल जाएगा। लेकिन जैसा कि दस्तावेज़ों में उल्लेख किया गया है, यह पूरे आवेदन जीवन चक्र के लिए बने रहने की गारंटी नहीं है।

  2. आप पूरे डिवाइस के टाइमज़ोन को बदलने के लिए AlarmManager का उपयोग कर सकते हैं। लेकिन आपको इसके लिए "SET_TIME_ZONE" -प्रमिशन की आवश्यकता है।

अगर आपको लगता है 1. खतरनाक है और आप 2. अपने सबसे अच्छा तरीका के लिए अनुमति नहीं है Calendar से हर तिथि हो और setTimeZone() के माध्यम से अपने कैलेंडर उदाहरण पर समयक्षेत्र स्थापित करने के लिए है।

+0

यह शर्म की बात है कि पहला समाधान 100% के लिए काम करने की गारंटी नहीं है। क्या आपके पास अधिक जानकारी है जिसमें 'TimeZone.setDefault() 'को अमान्य या ओवरराइट किया गया है? दस्तावेज केवल यह कहता है "यह मान किसी भी समय साफ़ या ओवरराइट किया जा सकता है" लेकिन जब यह होने जा रहा है और दस्तावेज अधिक जानकारी में स्पष्ट नहीं होता है। –

+0

@StefanArn क्षमा करें, मेरे पास कोई जानकारी मौजूद नहीं है। लेकिन मुझे संदेह है कि इसे सिस्टम द्वारा संशोधित किया जा सकता है, यदि डिवाइस को नेटवर्क या इसी तरह के स्रोतों (यानी जीपीएस) द्वारा दिनांक और टाइमज़ोन सेट करने के लिए कॉन्फ़िगर किया गया है। – AlexS