首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以编程方式启用USB tethering -有一个2.3版本的应用程序可以做到这一点

以编程方式启用USB tethering -有一个2.3版本的应用程序可以做到这一点
EN

Stack Overflow用户
提问于 2012-03-29 02:35:08
回答 6查看 17.8K关注 0票数 9

我在这里读到了许多问题,所以我想问一下如何以编程方式启用USB tethering。

答案总是一样的,普通的应用程序无法做到这一点,只有系统应用程序才能做到。

然而,只要花2.3美元,你就可以在市场上下载一个应用程序来为你做这件事。

https://play.google.com/store/apps/details?id=org.tdtran.autousbtethering

在ICS (Android 4.0.3)上,它不再工作。

他们是如何在2.3版本中做到的?4.0也有可能吗?

EN

回答 6

Stack Overflow用户

发布于 2012-06-05 22:09:44

使用以下代码,您可以启用USB tethering。我在4.0中没有测试。

代码语言:javascript
运行
复制
 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();
                        }
                    }
                }
        }
票数 8
EN

Stack Overflow用户

发布于 2012-08-31 12:53:57

ICS及更高版本:若要执行反射方法,应用程序将需要WRITE_SECURE_SETTINGS权限。

除非电话已建立根目录,否则此功能不可用。

票数 6
EN

Stack Overflow用户

发布于 2013-02-04 23:23:38

因为这是Google搜索结果中最受欢迎的页面之一,所以我想贡献我的代码,它是检查可用的接口。它可以在我的姜饼手机上使用,但不能在我的Galaxy S3上使用。

代码语言:javascript
运行
复制
    // 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));
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9913645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档