Có cách nào để biết (pro ngữ pháp) trong Hoạt động/Ứng dụng của bạn mà người dùng đã bật chia sẻ kết nối USB trên điện thoại của mình không?Phát hiện chia sẻ kết nối qua USB trên android
Trả lời
Xem qua Cài đặt.Tài liệu hệ thống trỏ đến câu trả lời là không, không thể thực hiện việc này.
bạn cũng có thể sử dụng phản ánh để truy cập chức năng ẩn cho thiết usb tethering. Đây là mã của tôi.
ConnectivityManager cm =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
Log.d(TAG,"test enable usb tethering");
String[] available = null;
int code=-1;
Method[] wmMethods = cm.getClass().getDeclaredMethods();
for(Method method: wmMethods){
if(method.getName().equals("getTetherableIfaces")){
try {
available = (String[]) method.invoke(cm);
break;
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
}
}
for(Method method: wmMethods){
if(method.getName().equals("tether")){
try {
code = (Integer) method.invoke(cm, available[0]);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
break;
}
}
if (code==0)
Log.d(TAG,"Enable usb tethering successfully!");
else
Log.d(TAG,"Enable usb tethering failed!");
Đối với việc vô hiệu hóa USB tethering, bạn chỉ cần thay đổi phản ánh tên phương pháp "getTetherableIfaces" thành "getTetheredIfaces", thay đổi "tether" thành "untether".
Vui lòng kiểm tra.
của nó không hoạt động trong Android 4.0 –
Nó sẽ đi mà không nói, nhưng đây là tất nhiên một cách tiêu chuẩn không làm nó, mà một nhà phát triển nên được nhận thức, vì vậy tôi chỉ nói nó anyway. –
không hoạt động trên các thiết bị samsung – Neji
Tôi nhận thấy rằng nếu tôi kiểm tra giao diện mạng usb0 , nó chỉ có địa chỉ ip sau khi chia sẻ kết nối đã được thiết lập.
public static String getIPAddressUsb(final boolean useIPv4) {
try {
final List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (final NetworkInterface intf : interfaces) {
if (intf.getDisplayName().startsWith("usb")) {
final List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
for (final InetAddress addr : addrs) {
final String sAddr = addr.getHostAddress().toUpperCase();
final boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr);
if (useIPv4) {
if (isIPv4) { return sAddr; }
} else {
if (!isIPv4) {
final int delim = sAddr.indexOf('%');
return delim < 0 ? sAddr : sAddr.substring(0, delim);
}
}
}
}
}
} catch (final Exception ex) {
// for now eat exceptions
}
return "";
}
boolean isUsbTethered(){
String ipAddr = MipnAndroidApplication.getIPAddressUsb(true);
if (ipAddr.length() == 0) {
Log.i(LOG_TAG, "tethering not enabled");
return false;
} else {
Log.i(LOG_TAG, "tethering enabled :)");
return true;
}
}
Công việc này. Ngay cả sau khi tôi biết tôi đã kết nối và chạy, tôi vẫn nhận được thông báo "chia sẻ kết nối không được bật" – javawocky
Đây là một giải pháp cho Nghe thay đổi trạng thái chia sẻ kết nối:
Trước tiên, bạn cần phải làm quen với BroadcastReceiver. bạn có thể tìm thấy rất nhiều hướng dẫn (google: làm thế nào để lắng nghe những thay đổi khả năng kết nối ...)
Để có được bản cập nhật trạng thái Tethering, bạn cần phải sử dụng một hành động lọc ẩn của Android (xem ConnectivityManager)
và trong lớp BroadcastReceiver của bạn:
IntentFilter filter = new IntentFilter("android.net.conn.TETHER_STATE_CHANGED");
sau đó đăng ký các bộ lọc để BroadcastReceiver của bạn:
myApplicationContext.registerReceiver(this, filter);
trên phương thức onReceive (bối cảnh cuối cùng của bối cảnh, ý định Intent cuối cùng), thông tin Intent.extras chứa 3 mảng được lấp đầy với giao diện mạng tethered tương ứng: erroredArray/availableArray/activeArray
Đó là một chút khó khăn nhưng bạn có thể nhận được thông tin trạng thái chia sẻ kết nối.
Bên cạnh đó, bạn có thể làm một số phản xạ về chức năng ẩn của mã Android:
Tìm kiếm getTetherableIfaces()
trong quản lý kết nối.
Dưới đây là một liên kết: https://github.com/android/platform_frameworks_base/blob/master/core/java/android/net/ConnectivityManager.java#L1604
này nên làm việc trên tất cả các điện thoại, khẳng định trên một số Android 7,6 và 5 thiết bị;
Phương thức: giao diện rndisX (thường rndis0) chỉ hiển thị khi bật chia sẻ kết nối qua usb.
Mã số Ví dụ:
private static boolean isTetheringActive(Context context){
try{
for(Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();){
NetworkInterface intf=en.nextElement();
for(Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){
InetAddress inetAddress=enumIpAddr.nextElement();
if(!intf.isLoopback()){
if(intf.getName().contains("rndis")){
return true;
}
}
}
}
}catch(Exception e){e.printStackTrace();}
return false;
}
- 1. Android: Phát hiện USB
- 2. Có thể chia sẻ kết nối internet của tôi từ máy tính đến android qua usb không?
- 3. Cách phát hiện kết nối USB trong linux/Qt
- 4. Gỡ lỗi USB Android với kết nối Internet PC
- 5. Android: Cách phát hiện "Bật lưu trữ USB" Phát sóng?
- 6. Kết nối máy chủ lưu trữ nối tiếp USB USB?
- 7. Phát hiện vòng kết nối hough android
- 8. phát triển một ứng dụng giao tiếp thiết bị đặc biệt kết nối qua cổng USB trên Android
- 9. Kết nối thiết bị USB với Trình giả lập Android?
- 10. pgAdmin - Chia sẻ các Định nghĩa Kết nối DB
- 11. Phát triển Android bằng USB
- 12. android: Làm cách nào để kết nối điện thoại Android với máy chiếu qua USB/HDMI?
- 13. Chia sẻ qua WhatsApp
- 14. IIS Express trên máy phát triển chia sẻ (rdp)
- 15. Phát triển ứng dụng chia sẻ kết nối iPhone riêng tư
- 16. Chia sẻ nội dung trên FaceBook Android
- 17. Mục đích chia sẻ của Android cho văn bản chia sẻ facebook VÀ liên kết
- 18. Kết nối WiFi qua android
- 19. Android: Chia sẻ văn bản & hình ảnh (URL) Qua Intent
- 20. Sqlite qua mạng chia sẻ
- 21. Liên kết chia sẻ Google+
- 22. Cách phát hiện xem có bật hoặc tắt máy in USB được kết nối không?
- 23. Phát hiện khi thiết bị USB được kết nối trong C
- 24. Chia sẻ kết nối XMPP giữa nhân viên Celery
- 25. Android phát hiện ngắt kết nối Bluetooth ngay lập tức
- 26. Phát hiện kết nối mạng bị hạn chế trong Android?
- 27. Chia sẻ trình phát HTML5 trên tường Facebook
- 28. Chia sẻ hình ảnh từ thiết bị Android đến thiết bị Android khác qua WiFi
- 29. Android 2.1 Phát hiện âm thanh Bluetooth kết nối/ngắt kết nối
- 30. Thiết bị USB được kết nối
Há chẳng phải càng tốt bằng cách sử dụng thậm chí java.lang.reflection?Tôi đã đạt được tình trạng kiểm tra Wifi Tethering bằng cách sử dụng ... nhưng đối với USB tôi chỉ không thể tìm ra. –