2012-03-14 12 views
6

ICS'de Ağ -> Veri kullanımı ayarları ekranlarında artık "Arka plan verilerini kısıtla" ayarı var.ICS'de "Arka plan verilerini kısıtla" ayarını koddan (program aracılığıyla) ayarlamak mümkün mü?

Uygulamam için "Arka plan verilerini kısıtla" programlı olarak ayarlamanın bir yolu var mı?

VEYA

Uygulamam için seçeneği vardır "Veri kullanımı" ayarlarını getirmek için bir yolu var mı? İkinci seçenek ise

+0

Bu sorunun size cevap vermesi muhtemel olmasa da, size biraz yardımcı olacağını düşünüyorum: http://developer.android.com/sdk/android-4.0.html#NetworkUsage –

+0

developer.android.com/sdk /android-4.0.html#NetworkUsage sadece genel veri kullanım ekranını uygulamaya özel bir uygulama ile değiştirmektir. İstediğim, kullanıcının Android’in yerleşik kısıtlamalarına erişmesine izin veren jeneriği getirmektir. – pzulw

cevap

0

, bu niyet

ACTION_MANAGE_NETWORK_USAGE

içine görünebilir "Etkinlik Eylem: ayarları göster belirli bir uygulamanın ağ veri kullanımını yönetmek için."

+0

ACTION_MANAGE_NETWORK_USAGE, bu eylemi içeren uygulamaları amaç filtrelerinde listeleyen bir menü oluşturur. – pzulw

+0

Bu, Android ayarları uygulamasının (özellikle veri kullanımı), uygulamanızın veri kullanımını izleyen bir etkinliğini başlatabilmesidir. – Diederik

3

Data Usage Android Teknik Bilgiler sayfasından Genel Bakış bölümünden başlayabilirsiniz.

Her ağ aygıtı sürücüsü, kullanım istatistiklerini android-3.0 Linux çekirdeğindeki xt_qtaguid modülüne bildirir. Daha sonra, çerçeveden bir uygulama için arka plan veri trafiğini kısıtlamak için ek kurallar belirtebilirsiniz.

com.android.server.NetworkManagementSocketTaggersetKernelCounterSet() yöntemine counterSet ve UID params değerini sağlamayı deneyin. android.net.NetworkPolicyManager ve UID'da counterSet değerlerinin tanımlandığı ve ContextWrapper.getApplicationInfo().uid aracılığıyla elde ettiğiniz uygulama kimliğiniz olacaktır.

Umarım bu başlamanıza başlar.

+0

Bunu, "NetworkManagementSocketTagger" SDK'sı yoluyla açıklanmadığı için yansıma yoluyla köklü olmayan bir cihazda denemeyi denedim. 'setKernelCounterSet() 'çalıştırır, ancak Logcat'ta görüyorum:' I/qtaguid (25017): Başarısız write_ctrl (s 0 10183) res = -1 errno = 1' ve 'W/NetworkManagementSocketTagger (25017): setKernelCountSet (10183, 0) errno -1' ile başarısız oldu. Köklü bir cihazda test etmedim. –

İlgili konular