[英]How to turn on/off wifi hotspot programmatically in Android 8.0 (Oreo)
[英]How to turn off LTE data connection programmatically in android 6 and android 7?
我想通過這種方式到達路由器:
isReachable = InetAddress.getByName("192.168.1.1").isReachable(2000);
但它返回false。
奇怪的是,當我手動關閉 LTE 數據時,它可以工作。
我發現此代碼以編程方式打開/關閉 LTE 數據,但它在 android 6 或 7 上不起作用。
private void setMobileDataEnabled(Context context, boolean enabled)
{
final ConnectivityManager conman = (ConnectivityManager)
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 Class iConnectivityManagerClass =
Class.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod =
iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled",
Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
}
您能幫我找到另一種在 android 6 或 7 上打開/關閉 LTE 數據的方法嗎?
我找到了如何解決我的問題。 我無法以編程方式關閉蜂窩數據,但如果找到了強制我的應用程序僅使用 wifi 連接的方法。 這是代碼:
final ConnectivityManager connectivityManager =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder request = null;
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.LOLLIPOP) {
request = new NetworkRequest.Builder();
request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.registerNetworkCallback(request.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
//if (SDK_INT >= LOLLIPOP && SDK_INT <= M) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ConnectivityManager.setProcessDefaultNetwork(network);
}
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.