2012-03-14 6 views
6

आईसीएस में अब नेटवर्क -> डेटा उपयोग सेटिंग्स स्क्रीन में "पृष्ठभूमि डेटा प्रतिबंधित करें" सेटिंग है।आईसीएस में कोड (प्रोग्रामेटिक रूप से) से "पृष्ठभूमि डेटा प्रतिबंधित करें" सेटिंग सेट करना संभव है?

क्या मेरे आवेदन के लिए प्रोग्रामेटिक रूप से "पृष्ठभूमि डेटा प्रतिबंधित करें" सेट करने का कोई तरीका है?

या

वहाँ "डेटा उपयोग" सेटिंग्स अपने आवेदन के लिए विकल्प है कि ऊपर लाने के लिए कोई तरीका है? ": एक विशिष्ट अनुप्रयोग के नेटवर्क डेटा के उपयोग के प्रबंधन के लिए सेटिंग दिखाएं गतिविधि कार्रवाई।"

+0

मुझे लगता है कि यह आपके लिए कुछ उपयोगी होगा, हालांकि संभवतः आपके प्रश्न का उत्तर देने के लिए पर्याप्त नहीं है: http://developer.android.com/sdk/android-4.0.html#NetworkUsage –

+0

डेवलपर.android.com/sdk /android-4.0.html#NetworkUsage केवल सामान्य डेटा उपयोग स्क्रीन को ऐप विशिष्ट के साथ बदलने के बारे में है। मैं जो चाहता हूं वह जेनेरिक एक को लाने के लिए है जो उपयोगकर्ता को एंड्रॉइड के अंतर्निहित प्रतिबंधों तक पहुंचने देता है। – pzulw

उत्तर

0

अपने दूसरे विकल्प के रूप में, आप इस आशय

ACTION_MANAGE_NETWORK_USAGE

पर गौर कर सकते हैं

+0

ACTION_MANAGE_NETWORK_USAGE एक मेनू लाता है जो उनके इरादे फ़िल्टर में उस क्रिया के साथ अनुप्रयोगों को सूचीबद्ध करता है। – pzulw

+0

ऐसा इसलिए है कि एंड्रॉइड सेटिंग्स ऐप (डेटा उपयोग विशेष रूप से) आपके ऐप की एक गतिविधि लॉन्च कर सकता है जो डेटा उपयोग पर नज़र रखता है। – Diederik

3

आप Data Usage एंड्रॉइड टेक जानकारी पृष्ठ के अवलोकन से शुरू कर सकते हैं।

प्रत्येक नेटवर्क डिवाइस ड्राइवर एंड्रॉइड-3.0 लिनक्स कर्नेल में xt_qtaguid मॉड्यूल पर इसके उपयोग आंकड़े रिपोर्ट करेगा। फिर, ढांचे से आप एप्लिकेशन के लिए पृष्ठभूमि डेटा यातायात को प्रतिबंधित करने के लिए अतिरिक्त नियम निर्दिष्ट कर सकते हैं।

com.android.server.NetworkManagementSocketTaggersetKernelCounterSet() विधि के लिए counterSet और UID पैरामीटर प्रदान करने का प्रयास करें। counterSet मान android.net.NetworkPolicyManager और UID में परिभाषित किए गए हैं ContextWrapper.getApplicationInfo().uid के माध्यम से आपकी आवेदन आईडी प्राप्त की जाएगी।

मुझे आशा है कि यह आपको शुरू हो जाएगा।

+0

मैंने प्रतिबिंब के माध्यम से इसे गैर-रूट डिवाइस पर कार्यान्वित करने का प्रयास किया है, क्योंकि 'NetworkManagementSocketTagger' को एसडीके के माध्यम से उजागर नहीं किया गया है। 'setKernelCounterSet() 'निष्पादित करता है, लेकिन मैं लॉगकैट में देखता हूं:' I/qtaguid (25017): असफल write_ctrl (s 0 10183) res = -1 errno = 1' और' W/NetworkManagementSocketTagger (25017): setKernelCountSet (10183, 0) errno -1' के साथ विफल रहा। मैंने रूट डिवाइस पर परीक्षण नहीं किया है। –

संबंधित मुद्दे