小智 39
有些人建议使用UMS_CONNECTED从最近的Android版本开始使用哪一个.另一个问题是它不适用于支持MTP的设备
其他建议使用的BatteryManager,更准确ACTION_BATTERY_CHANGED,以及BATTERY_PLUGGED_AC和BATTERY_PLUGGED_USB
这是完美的,如果你要检测的电池或移动设备的充电状态,但不是USB连接的一个非常好的指标.使用电池管理器很容易在较旧的Android平板电脑上失败,例如XOOM,ICONIA标签A510和较旧的华硕平板电脑.
要完全检测到设备已插在PC上,您可以:使用android.hardware.usb.action.USB_STATE并connected
代替这些BatteryManager内容
代码示例
public static boolean isConnected(Context context) {
intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
return intent.getExtras().getBoolean("connected");
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
这对我有用。
将此添加到您的 AndroidManifest.xml
<receiver android:name=".PlugInControlReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
<action android:name="android.hardware.usb.action.USB_STATE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
并创建您的BroadcastReceiver.
public class PlugInControlReceiver extends BroadcastReceiver {
@Override public void onReceive(final Context context, Intent intent) {
String action = intent.getAction();
Log.v("PlugInControlReceiver","action: "+action);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
if(action.equals("android.hardware.usb.action.USB_STATE")) {
if(intent.getExtras().getBoolean("connected")){
Toast.makeText(context, "USB Connected", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context, "USB Disconnected", Toast.LENGTH_SHORT).show();
}
}
} else {
if(action.equals(Intent.ACTION_POWER_CONNECTED)) {
Toast.makeText(context, "USB Connected", Toast.LENGTH_SHORT).show();
}
else if(action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
Toast.makeText(context, "USB Disconnected", Toast.LENGTH_SHORT).show();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
能够通过以下方式注册广播接收器来检测USB连接,
IntentFilter mIntentFilter = new IntentFilter(Intent.ACTION_UMS_CONNECTED); BroadcastReceiver bd = new intentReceiver(); registerReceiver(bd, mIntentFilter);
的Manifest.xml:
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.ums_connected" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
MyReceiver:
public class MyReceiver extends BroadcastReceiver{
if (intent.getAction().equalsIgnoreCase(
"android.intent.action.UMS_CONNECTED")) {...}
}
Run Code Online (Sandbox Code Playgroud)
如果您只想检测是否有权访问 SD 卡,那么以下操作将起作用:
private boolean canWriteToFlash() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// Read only isn't good enough
return false;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29012 次 |
| 最近记录: |