我在android市場上有一個應用程序,用戶經常將他們的設備連接到他們的計算機上,以將音樂添加到應用程序文件夾中。我已經在說明中明確指出,在USB連接模式啓用時,android應用程序無法與SD卡進行通信。顯然這並不足以證明這一點。有沒有辦法在java中檢測USB是否連接?我已經看到它用廣播接收機完成了,但這是一個愚蠢的做法。如果用戶在連接到USB後啓動應用程序,這將不起作用。有一個更好的方法。如何檢查USB連接模式是否在android上啓用?
2
A
回答
1
這是與此類似:Check USB Connection Status on Android
雖然他們利用廣播接收機。你說這是一個愚蠢的做事方式,但你能更具體一些嗎?
在應用程序啓動後,您不能檢測到它。什麼,你需要做的是把
<intent-filter>
<action android:name="android.intent.action.ACTION_UMS_CONNECTED"/>
<action android:name="android.intent.action.ACTION_UMS_DISCONNECTED"/>
在AndroidManifest.xml中的<Receiver>
條目下面的類下面:
public class IntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(Intent.ACTION_UMS_CONNECTED)){
Toast.makeText(context, "mounted", Toast.LENGTH_LONG).show();
Intent myStarterIntent = new Intent(context, tst.class);
myStarterIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myStarterIntent);
}
}
}
`
來源引:http://www.anddev.org/start_activity_on_usb_connect-t8814.html
1
A1:你說「用戶經常把他們的設備連接到他們的電腦上,把音樂添加到應用程序文件夾中」,我想你的意思是說,Sd ca RD已連接到PC的MassStorage
模式下,你可以檢查此如下:
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_SHARED.equals(state)) {
// Sd card has connected to PC in MSC mode
}
A2:你說:「如果用戶連接USB後啓動應用這樣可不行」,我不同意和你在一起,在ICS,你可以註冊一個接收器收聽android.hardware.action.USB_STATE
變化,由系統廣播的意圖是在STICKY模式,這就是說,即使在您的應用程序接收器USB電纜連接後註冊,你也可以得到這個消息:
Intent intent = context.registerReceiver(...);
if (intent != null) {
boolean isConnected = intent.getBooleanExtra(USB_CONNECTED, false);
boolean isMscConnection = intent.getBooleanExtra(USB_FUNCTION_MASS_STORAGE, false);
}
上述方法返回的意圖消息在將USB電纜連接到PC之前,您錯過了。
參閱下面的鏈接瞭解詳細信息: http://www.androidadb.com/source/toolib-read-only/frameworks/base/core/java/android/hardware/usb/UsbManager.java.html
相關問題
- 1. 檢查Android上的USB連接狀態
- 2. 檢查是否有USB/AC連接
- 3. 如何檢查android上是否啓用了背景數據?
- 4. 如何在簽署文檔時檢查DSC(USB令牌)是否已連接?
- 5. 如何檢查wifi是否連接?
- 6. 如何檢查連接是否存活?
- 7. 如何檢查Graph是否連接
- 8. 如何檢查連接是否丟失
- 9. 如何檢查連接是否爲SSL?
- 10. 檢查用戶是否連接到Android上的WIFi
- 11. 如何在java連接池中檢查連接是否關閉
- 12. 查找在USB連接上啓動的默認應用程序
- 13. 如何檢測硬盤是否通過USB連接?
- 14. 如何更改Android的USB連接模式僅收費?
- 15. 檢查mongoDB是否連接
- 16. 如何在android中啓用usb cp21x模式?
- 17. 如何判斷USB是否連接到Android設備?
- 18. 如何檢查設備是否連接到電源,USB或基座
- 19. 如何確定連接的USB設備是否爲USB閃存?
- 20. 如何檢查Android是否有互聯網連接
- 21. 如何檢查我的android設備是否有連接?
- 22. 如何檢查Android設備是否連接到網絡?
- 23. 如何在android中檢查NFC是否啓用?
- 24. 如何檢查模型是否連接到表
- 25. 如何檢查模型的數據是否準確連接?
- 26. 如何檢查在Espresso中啓用或禁用互連連接Android
- 27. 檢查網絡連接在android中是否可用?
- 28. 在Android中檢查Internet連接是否經常可用?
- 29. 如何以編程方式檢查鍵盤是否連接?
- 30. 如何檢查聯邦是否啓用
「這是不是說你不能檢測到它的應用程序啓動後的情況。」我的意思與你所說的相反。只有在USB連接或斷開連接時纔會收到廣播,因此如果您在這些操作之間啓動應用程序,則無法確定連接與否。 – NJGUY 2012-01-10 03:07:07