Tuesday, July 31, 2012

Re: [android-developers] Is setting invalid APN the only way to disable mobile network connection?

Well, yes and no. I do understand it is a little weird because an app can turn on mobile data out of user will. But we are Android :) user can decide to uninstall ill intention app. Think of it in another way, if my phone battery is critically low I would want to turn off my data so I can still receive sms/phone and the battery will last a lot longer. If I keep it in my pocket and didn't realise that my battery is low, I wouldn't have a change to switch data off. There are many app such as the famous Juice Defender that control what happen when battery is low etc, and many apps has ability to control it. I am sure it is there just not being documented.


On Wed, Aug 1, 2012 at 12:04 AM, Nick Kralevich <nnk@google.com> wrote:

Hmm....  From the platform's point of view, this sounds like a denial of service attack against other applications on the device. One application shouldn't be able to interfere with another application's network connectivity without the user being involved.

-- Nick

On Tue, Jul 31, 2012 at 8:26 AM, CJ wrote:
Hi, I am working on a app to automate some setting eg. to perform certain action such as disable mobile data when battery is low or night mode etc.
There are app in the market that able to disable/enable mobile data connection like SmartAction and a few more. I also dislike the alter APN method so I am looking for better alternatives.

On Tuesday, 31 July 2012 23:14:41 UTC+8, Robert Greenwalt wrote:
Apps won't be able to alter the APN database after Honeycomb or perhaps ICS.  The User can disable data from settings.  Why does an application need to disable data?


On Tue, Jul 31, 2012 at 8:03 AM, CJ wrote:

Hi,

I have been googling for a while able the best or right way to disable/enable mobile network.

I tried the following code which is all over Stackoverflow and is working fine for gingerbread and higher:

private void setMobileDataEnabled(Context context, boolean enabled)
throws Exception {
final ConnectivityManager conman = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final Class<?> conmanClass = Class.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass
.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField
.get(conman);
final Class<?> iConnectivityManagerClass = Class
.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass
.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);

setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
}

Somehow I didn't find a way to do the same thing for Android 2.2 and below. Many mentioned to change the APN name to something invalid like what app APNDroid did but is that the only way?

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en



--
Nick Kralevich | Android Security | nnk@google.com | 650.214.4037

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment