3
我正在嘗試使用Android Honeycomb提供的USB Host來創建應用程序。 我想知道什麼時候我的USB設備(USB閃存盤)連接到主設備。 現在我可以知道何時USB設備已分離,但未連接時。Android 3.1活動,如何接收ACTION_USB_DEVICE_ATTACHED?
看來這兩個意圖不是以相同的方式發送的。
你能幫我嗎? 非常感謝。
我正在嘗試使用Android Honeycomb提供的USB Host來創建應用程序。 我想知道什麼時候我的USB設備(USB閃存盤)連接到主設備。 現在我可以知道何時USB設備已分離,但未連接時。Android 3.1活動,如何接收ACTION_USB_DEVICE_ATTACHED?
看來這兩個意圖不是以相同的方式發送的。
你能幫我嗎? 非常感謝。
從我所知道的,你必須做一個代理活動,攔截USB_DEVICE_ATTACHED意圖,然後啓動真實活動,傳遞一些意圖,最後調用finish()。
示例XML從GalleryNew3DGoogle.apk
<activity android:label="@string/app_name"
android:name="com.android.gallery3d.app.UsbDeviceActivity" android:taskAffinity=""
android:launchMode="singleInstance"><intent-filter><action
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/></intent-filter><meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter"/></activity>
撕開而這裏是從UsbDeviceActivity
的.smali
.method protected onCreate(Landroid/os/Bundle;)V
.locals 3
.parameter
.prologue
.line 35
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
.line 38
new-instance v0, Landroid/content/Intent;
const-class v1, Lcom/android/gallery3d/app/Gallery;
invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
.line 39
const/high16 v1, 0x1400
invoke-virtual {v0, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
.line 41
:try_start_0
invoke-virtual {p0, v0}, Lcom/android/gallery3d/app/UsbDeviceActivity;->startActivity(Landroid/content/Intent;)V
:try_end_0
.catch Landroid/content/ActivityNotFoundException; {:try_start_0 .. :try_end_0} :catch_0
.line 45
:goto_0
invoke-virtual {p0}, Lcom/android/gallery3d/app/UsbDeviceActivity;->finish()V
.line 46
return-void
.line 42
:catch_0
move-exception v0
.line 43
const-string v1, "UsbDeviceActivity"
const-string v2, "unable to start Gallery activity"
invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
goto :goto_0
.end method
(在有
onCreate
的唯一方法)