【发布时间】:2018-04-09 13:20:28
【问题描述】:
我已经创建了一个 android 应用程序,如果 USB 连接到 PC,它会告诉将文本“mtp”设置为 textview,或者如果 USB 连接到充电器,则将文本“充电器”设置为 textview。我使用广播接收器进行 USB 电缆检测! 当我在手机上运行应用程序并将 USB 数据线连接到电脑或充电器时,什么也没有发生,它只打印无!问题出在哪里?
public class Receiver extends BroadcastReceiver
{
Intent intent;
@Override
public void onReceive(Context context, Intent intent)
{
intent = new Intent("check");
if(intent.getAction().equalsIgnoreCase("android.hardware.usb.action.USB_STATE"))
{
intent.putExtra("MTP", true);
context.sendBroadcast(intent);
}
else if (intent.getAction().equals("android.intent.action.ACTION_POWER_CONNECTED"))
{
intent.putExtra("isChargerConnected", true);
context.sendBroadcast(intent);
}
else
{
intent.putExtra("isCableConnected", false);
context.sendBroadcast(intent);
}
}
}
public class MainActivity extends AppCompatActivity
{
private TextView cable;
BroadcastReceiver broadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cable = (TextView) findViewById(R.id.cable);
broadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent != null && intent.getAction().equals("check"))
{
Bundle bundle = intent.getExtras();
if (bundle != null && bundle.containsKey("MTP"))
{
boolean isUSBConnected = bundle.getBoolean("MTP");
if(isUSBConnected)
cable.setText("MTP");
}
if (bundle != null && bundle.containsKey("isChargerConnected"))
{
boolean isChargerConnected = bundle.getBoolean("isChargerConnected");
if(isChargerConnected)
cable.setText("Charger");
}
if (bundle != null && bundle.containsKey("isCableConnected"))
{
boolean isCableConnected = bundle.getBoolean("isCableConnected");
if(!isCableConnected)
cable.setText("None");
}
}
}
};
IntentFilter intentFilter = new IntentFilter("check");
registerReceiver(broadcastReceiver, intentFilter);
}
<receiver android:name=".Receiver">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_STATE"/>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
</intent-filter>
</receiver>
【问题讨论】: