2011-06-22 18 views
3

私はAndroid Honeycombが提供するUSB​​ホストを使用してアプリケーションを作成しようとしています。 私の欲しいのは、私のUSBデバイス(USBフラッシュドライブ)がメインデバイスにいつ接続されているかを知ることです。 今のところ私はUSBデバイスが取り外されたときに、それが接続されているかどうかを知ることができます。Android 3.1アクティビティ、ACTION_USB_DEVICE_ATTACHEDの受信方法

これらの2つのインテントは同じように送信されないようです。

私を助けてもらえますか? ありがとうございました。

答えて

1

私が知ることから、USB_DEVICE_ATTACHEDインテントをインターセプトし、次に実際のアクティビティを起動し、いくつかのインテントを渡して、最後にfinish()が呼び出されるプロキシアクティビティを作成する必要があります。

例XMLは

<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> 

GalleryNew3DGoogle.apk

からリッピングそして、ここ 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がある中で唯一の方法は)です
関連する問題