标签: android-networking

如何使用 adb shell 命令将所有应用程序流量重定向到代理服务器?

任务:将所有 Android 设备流量(包括所有应用程序)转移到代理服务器。

方法:使用 adb shell 命令设置代理:“ adb shell settings put global http_proxy proxy:port

问题:并非所有应用程序数据都是通过代理传输的。

问题:为什么我会遇到上述问题,是否有其他方法来设置代理,以便 Android 设备的所有流量都将通过该代理?

注意:请不要给出有关使用 VPN 的建议。

android android-networking

5
推荐指数
1
解决办法
2432
查看次数

Android:如何以编程方式捕获应用程序的网络流量?

我目前正在开发一个库,该库使 QA 或开发人员能够在他们的应用程序中调试网络流量,我们目前使用 OKHttp,我知道如何创建拦截器并将所有请求数据分派到库。这样开发人员或 QA 可以查看此类数据(有效负载/URL/大小/响应代码/持续时间...等),但是我想创建一个更通用的解决方案来侦听 HTTP 流量甚至 TCP 流量,然后从那里获取数据,但是我找不到起点,我知道这是可能的,因为 Firebase Performance 正在这样做,但我仍然找不到 API 或无论如何都无法监听此类流量。

我希望来自 Google Firebase 性能团队的人员分享一些有关他们如何做到这一点的信息(如果这不是商业秘密的话):)

我遇到了这个解决方案: https: //github.com/cyruliu/Sensitive_API_Monitor/blob/master/app/src/main/java/com/android/reverse/apimonitor/NetWorkHook.java 但是,反射看起来有点糟糕,我希望找到更好的方法。

android android-networking firebase-performance

5
推荐指数
1
解决办法
3106
查看次数

使用Android服务处理网络连接

我正在开发一款需要维护与聊天服务器的网络连接的Android应用.我知道我可以创建一个服务来启动与服务器的连接,但是服务如何通知Android Activity新的传入消息?活动需要更新视图以显示新消息.我对Android很新,所以任何帮助都表示赞赏.谢谢!

java android android-service android-networking

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

限制Android同步到WIFi

我是Android新手,我正在尝试写一个SyncAdapter- 是否有可能限制SyncAdapter只在网络是WiFi(而不是3G等)时执行同步?

android android-networking android-syncadapter

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

有没有办法让 Android 设备应答发送到广播地址的 icmp ping?

我想以编程方式让我的设备在连接到 WiFi 网络时响应广播 ping(即 ping 192.178.1.255)。

我有办法做到这一点吗?也许是一个会回复的侦听器,或者是在某个地方设置的标志?

谢谢。

android ping broadcast icmp android-networking

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

在Retrofit 2中是否有RequestInterceptor的替代品?

我遇到了RequestInterceptorRetrofit 2中删除的问题.早些时候,我的RestAdapter构建器如下:

private RestAdapter.Builder getBuilder(RequestInterceptor requestInterceptor) {
    RestAdapter.Builder builder = new RestAdapter.Builder()
            .setEndpoint(BuildConfig.SERVER_URL)
            .setClient(connectionClient)
            .setRequestInterceptor(requestInterceptor)
            .setConverter(new JacksonConverter());
    return builder;
}
Run Code Online (Sandbox Code Playgroud)

据我所知,目前它建议使用interceptorOkHttp库代替RequestInterceptor.

我无法找到这种方法的示范性实施,因此,请感谢任何帮助.

谢谢!

java android android-networking retrofit okhttp

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

如何使用 Retrofit 发送带值的 Hashmap

我正在尝试通过 POST HashMap 和 API KEY 发送到 API,但我不能,因为我需要像发送 @Field("something") 一样发送它。所以我想要的是 @FieldMap("meta")

示例我如何使用字段:

@FormUrlEncoded
@POST("/api")
Call<CallBackMethod> save(@Query("apikey") String api_key,
                          @Field("something") String test);
Run Code Online (Sandbox Code Playgroud)

我目前如何使用 FieldMap,但未发送字段映射,因为 API 需要名称为“meta”的数组,因此我收到来自服务器的错误响应 POST 中不存在元数据。API 有效。但是我需要向它发送一个带有键和值的数组,即 Java 中的 Hashmap。

我这样称呼这个 API:

  Map<String, String> meta = new HashMap<>();
        meta.put("user_id", user_id);
        final Api apiService = ApiClient.getAPI().create(Api.class);
        Call<OtherMethod> call = apiService.getOtherMethod(API_KEY, meta);
  call.enqueue(new Callback<OtherMethod>() {
        @Override
        public void onResponse(Call<OtherMethod> call, Response<OtherMethod> response) {
            Log.d("Response Raw", response.raw() + "");
            Log.d("Response Raw", response.isSuccessful() + "");

        }

        @Override
        public void onFailure(Call<OtherMethod> call, Throwable t) …
Run Code Online (Sandbox Code Playgroud)

android callback android-networking retrofit retrofit2

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

Android - OkHttp - 使用 TrafficStats 标记所有网络请求

我试图具体弄清楚我使用 OkHttpClient 发送的请求使用了我的应用程序的数据使用量,并且我发现我可以使用TrafficStats来标记线程,然后使用该标记查看它的网络活动。

如果我做类似的事情

TrafficStats.setThreadStatsTag(1234);
okHttpClient.execute(request);
Run Code Online (Sandbox Code Playgroud)

然后它实际上将其标记为“ok”(ish),但是当我使用异步方法(okHttpClient.enqueue(request))时,它没有(这很明显,尽管我希望他们对此有支持)。

所以我尝试了几件事:

  • 为客户端设置一个调度程序,它是一个普通的调度程序,基本上在每次执行时都会将它接收到的 Runnable 替换为一个新的 runnable,该新的 runnable 首先标记线程,然后运行原始的 runnable - 一些流量被标记,但很多流量没有。
  • 设置一个套接字工厂,基本上标记它生成的每个套接字 - 仍然有一些流量被标记,但大多数都没有。

有任何想法吗?

android android-networking okhttp

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

更改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
查看次数

如何在Android中检测上传/下载传输速率?

我正在开发一个上载大量数据的应用程序。我想确定上传的传输速率,以显示在通知中。

  • 一篇文章建议使用WifiInfo不适用于移动数据。
  • 另一篇文章建议获取网络类型以估计速度。

我对这些帖子中的答案不满意,因此我再次询问。

我看过显示上传传输速率的应用程序,以及一些自定义ROM,例如Resurrection Remix

如何确定这些上传的传输速率?

java android android-networking android-internet okhttp

4
推荐指数
2
解决办法
795
查看次数