【问题标题】:Android 3.1 Activity, how to receive a ACTION_USB_DEVICE_ATTACHED?Android 3.1 Activity,如何接收 ACTION_USB_DEVICE_ATTACHED?
【发布时间】:2011-06-22 07:59:16
【问题描述】:

我正在尝试使用 Android Honeycomb 提供的 USB 主机制作应用程序。 我想知道我的 USB 设备(USB 闪存驱动器)何时连接到主设备。 现在我可以知道 USB 设备何时分离,但不知道何时连接。

这两个意图似乎不是以相同的方式发送的。

你能帮帮我吗? 非常感谢。

【问题讨论】:

    标签: android usb android-3.0-honeycomb host


    【解决方案1】:

    据我所知,您必须创建一个代理 Activity 来拦截 USB_DEVICE_ATTACHED 意图,然后启动真正的 Activity,向其传递一些意图,最后调用 finish()。

    从 GalleryNew3DGoogle.apk 中提取的 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>
    

    这是来自UsbDeviceActivity 的.smali(唯一的方法是onCreate

    .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
    

    【讨论】:

      猜你喜欢
      • 2012-06-26
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      相关资源
      最近更新 更多