प्राप्त नहीं करता है मैंने संलग्न और अलग यूएसबी डिवाइस का पता लगाने के लिए the description and samples for USB host at developer.android.com के माध्यम से काम किया।एंड्रॉइड 3.1 यूएसबी-होस्ट - ब्रॉडकास्ट रिसीवर यूएसबी_DEVICE_ATTACHED
यदि मैं डिवाइस संलग्न होने पर अपना एप्लिकेशन शुरू करने के लिए मैनिफेस्ट फ़ाइल में एक इरादा-फ़िल्टर का उपयोग करता हूं, तो यह पूरी तरह से ठीक काम करता है: प्लग इन, डिवाइस का पता चला है, एंड्रॉइड एप्लिकेशन को शुरू करने की अनुमति मांगता है, डिवाइस की जानकारी प्रदर्शित होती है एक टेबल में
जो एप्लिकेशन मैं विकसित कर रहा हूं उसे केवल तब शुरू नहीं किया जाना चाहिए जब डिवाइस संलग्न/अलग हो (उदा। डेटा प्रबंधन उद्देश्यों)। मैं यह भी नहीं चाहता कि ऐप पहले से चल रहा है तो ओपन-डायलॉग पॉप अप करना चाहता है। इसलिए मैंने डिवाइस को संलग्न होने पर सीधे गतिविधि शुरू नहीं करने का फैसला किया, लेकिन एक ब्रॉडकास्ट रिसीवर पंजीकृत करने के लिए, जो (बाद में) डिवाइस को/अलग करने पर गतिविधि को सूचित करने के लिए माना जाता है। यह रिसीवर अलग-अलग कार्य को पहचानता है, लेकिन अटैचमेंट-एक्शन नहीं।
क्या मुझे अनुमति या डेटा विशेषता या ऐसा कुछ याद आ रहा है? ट्यूटोरियल और नमूने अतिरिक्त आवश्यक विशेषताओं के बारे में कुछ भी नहीं कहते हैं।
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="de.visira.smartfdr"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="12" />
<uses-feature android:name="android.hardware.usb.host" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".usb.Detector">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"
android:resource="@xml/device_filter" />
</receiver>
</application>
और रिसीवर:
यहाँ मैनिफ़ेस्ट फ़ाइल है
public class FDRDetector extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Toast.makeText(context, "Action: " + action, 3).show();
// pops up only if action == DETACHED
}
मुझे समझ नहीं आता क्यों एक ही मंशा फिल्टर काम करता है, अगर मैं उन पर उपयोग करें एक गतिविधि, लेकिन अगर वे एक रिसीवर पर लागू नहीं होते हैं? यहां तक कि अगर मैं रिसीवर सेट करता हूं और कोड में फ़िल्टर करता हूं, तो अटैचमेंट पहचाने जाते हैं।
मेरे काम के माहौल: आईडीई ग्रहण 3.7 के साथ एंड्रॉयड प्लगइन
डिवाइस: एसर Iconia Tab A500
एंड्रॉयड: 3.1
अग्रिम धन्यवाद
न्यूइन्टेंट() पर ओवरराइड करने का प्रयास करें - जब आप एंड्रॉइड का उपयोग करते हैं तो इसे लॉन्च किया जाता है: launchMode = "singleTop" और शायद आपकी स्थिति को काफी अच्छी तरह से हल करता है। onResume() हमेशा बाद में कहा जाता है। – Gusdor
क्या आप अपना पहला पैराग्राफ समझा सकते हैं "इसका सारांश है"? यह मुझे बहुत उलझन में लग रहा है। –
धन्यवाद, मैं वही बात सोच रहा हूं। यह जानना अच्छा है कि यह कुछ ऐसा नहीं है जो काम नहीं करता है। मुझे एक एंड्रॉइड बग की तरह बदबू आ रही है। – Brian