小编Tia*_*ira的帖子

如何以编程方式启用Android O WiFi Hotspot

我们一直在使用WifiManager隐藏API来启用Wifi网络共享并创建一个接入点.Android上的API 26现在的问题是标签@RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED)已添加到setWifiApEnabled函数中,现在调用返回false并打印以下日志:

W/WifiManager:PACKAGE_NAME尝试调用setWifiApEnabled enabled = true

阅读新文档时,它表示该函数已弃用,并将在即将发布的版本中删除,而是ConnectivityManager#startTethering在调用者具有适当权限时使用,但此方法在没有TETHER_PRIVILEGED权限时也存在同样的问题.文档中提供的另一个选项是使用,LocalOnlyHotspot但这对项目没用,因为创建的热点没有Internet连接.

我还使用startSoftAp隐藏API中的函数进行了测试,但由于引发了以下异常,因此没有成功的结果:

WifiService:用户10164和当前进程都没有android.permission.NETWORK_STACK

是否有任何解决方法可以在较新的API上激活Wifi热点?我也搜索了Wifi网络共享的替代方案,但唯一可行的选择似乎是蓝牙网络共享,只有获得3G速度的缺点.还考虑了Wifi Aware和Wifi P2P,但这些都存在互联网连接不能在设备之间共享的问题.

有关如何处理此问题的任何建议?

android android-networking android-wifi hotspot

6
推荐指数
1
解决办法
5724
查看次数

更改Android热点设置

随着API级别26的发布,我的应用程序的核心功能破了,这就是改变了应用程序中用户的热点设置.要获取和设置此配置,我使用WifiManager隐藏的api中的以下函数:getWifiApConfigurationsetWifiApConfiguration.

Method getWifiApConfiguration = wifiManager.getClass().getMethod("getWifiApConfiguration");
getWifiApConfiguration.invoke(wifiManager);
Run Code Online (Sandbox Code Playgroud)

这适用于Android O之前的设备,但在此版本中我收到以下错误:

应用程序不允许读取或更新存储的WiFi Ap配置(uid = 10168)

我在清单中声明的​​权限是:

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.NETWORK_STACK"/>
<uses-permission android:name="android.permission.TETHER_PRIVILEGED" />
Run Code Online (Sandbox Code Playgroud)

如何使用最新的API执行此操作?

android android-networking android-wifi tethering

4
推荐指数
1
解决办法
3637
查看次数

在C++ 11/14中高效读取文件

我正在创建一个IOManager类,其中我有一个函数来读取文件并将其存储在缓冲区中.这样做最有效的方法是什么?

我目前有2段代码:

bool IOManager::readFileToBuffer(std::string filePath, std::vector<unsigned char>& buffer) {
    std::ifstream file(filePath, std::ios::binary);
    if (file.fail()) {
        perror(filePath.c_str());
        return false;
    }

    //seek to the end
    file.seekg(0, std::ios::end);

    //Get the file size
    int fileSize = file.tellg();
    file.seekg(0, std::ios::beg);

    //Reduce the file size by any header bytes that might be present
    fileSize -= file.tellg();

    buffer.resize(fileSize);
    file.read((char *)&(buffer[0]), fileSize);
    file.close();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

bool IOManager::readFileToBuffer(std::string filePath, std::vector<char>& buffer) {

    std::ifstream file(filePath, std::ios::binary);

    if (file.fail()) {
        perror(filePath.c_str());
        return false;
    }

    // copies all data into …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 c++14

3
推荐指数
1
解决办法
5951
查看次数

如何使用 Apache Camel REST DSL (Servlet/Restlet) 设置 HTTP 状态码原因

我有一个使用 Spring Boot 和 Apache Camel 构建的 Web 应用程序,我正在实现一个 REST 接口。目前,使用 Camel 默认ServletRestlet组件,我没有在响应中获得 HTTP 状态代码原因。

这是我在将 HTTP 状态代码设置为 403 时得到的示例响应:

< HTTP/1.1 403 
< Date: Mon, 19 Feb 2018 10:01:21 GMT
< Server: Restlet-Framework/2.4.0
< Content-Type: application/json
< Content-Length: 75
Run Code Online (Sandbox Code Playgroud)

应该如何:

< HTTP/1.1 403 Forbidden
< Date: Mon, 19 Feb 2018 10:01:21 GMT
< Server: Restlet-Framework/2.4.0
< Content-Type: application/json
< Content-Length: 75
Run Code Online (Sandbox Code Playgroud)

如何配置 Camel/Restlet/Servlet 以在 HTTP 状态代码中包含原因?

我目前的配置:

应用程序.java

@SpringBootApplication
public class Application extends SpringBootServletInitializer { …
Run Code Online (Sandbox Code Playgroud)

java rest restlet apache-camel spring-boot

1
推荐指数
2
解决办法
6563
查看次数