我在这里读到了许多问题,所以我想问一下如何以编程方式启用USB tethering。
答案总是一样的,普通的应用程序无法做到这一点,只有系统应用程序才能做到。
然而,只要花2.3美元,你就可以在市场上下载一个应用程序来为你做这件事。
https://play.google.com/store/apps/details?id=org.tdtran.autousbtethering
在ICS (Android 4.0.3)上,它不再工作。
他们是如何在2.3版本中做到的?4.0也有可能吗?
发布于 2012-06-05 22:09:44
使用以下代码,您可以启用USB tethering。我在4.0中没有测试。
public void switchOnTethering() {
Object obj = getSystemService(Context.CONNECTIVITY_SERVICE);
for (Method m : obj.getClass().getDeclaredMethods()) {
if (m.getName().equals("tether")) {
try {
m.invoke(obj, "usb0");
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}发布于 2012-08-31 12:53:57
ICS及更高版本:若要执行反射方法,应用程序将需要WRITE_SECURE_SETTINGS权限。
除非电话已建立根目录,否则此功能不可用。
发布于 2013-02-04 23:23:38
因为这是Google搜索结果中最受欢迎的页面之一,所以我想贡献我的代码,它是检查可用的接口。它可以在我的姜饼手机上使用,但不能在我的Galaxy S3上使用。
// DETECT INTERFACE NAME
Log.i("UsbTethering","Detecting tetherable usb interface.");
String[] available = null;
ConnectivityManager connMgr = (ConnectivityManager)connectivityServiceObject;
Method[] wmMethods = connMgr.getClass().getDeclaredMethods();
for(Method getMethod: wmMethods)
{
if(getMethod.getName().equals("getTetherableUsbRegexs"))
{
try
{
available = (String[]) getMethod.invoke(connMgr);
break;
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
// DETECT INTERFACE NAME
if(available.length > 0)
{
for(String interfaceName : available)
{
Log.i("UsbTethering", "Detected " + String.valueOf(available.length) + " tetherable usb interfaces.");
Log.i("UsbTethering", "Trying to " + desiredString + " UsbTethering on interface " + interfaceName + "...");
Integer returnCode = (Integer)method.invoke(connectivityServiceObject, interfaceName);
if(returnCode == 0)
{
Log.i("UsbTethering", "UsbTethering " + desiredString + "d.");
return true;
}
else
{
Log.w("UsbTethering", "Failed to " + desiredString + "Usb Tethering. ReturnCode of method " + method.getName() + ": " + String.valueOf(returnCode));
}
}
}https://stackoverflow.com/questions/9913645
复制相似问题