2011-05-22 13 views
7

पर निर्भर करता है, मैं एक ऐसे एप्लिकेशन को विकसित कर रहा हूं जिसने कुछ इरादों को फ़िल्टर किया है (एक्शन स्ट्रिंग्स के रूप में, जैसे com.example.project.UPLOAD) उपयोग करने के लिए अन्य अनुप्रयोगों। उस डिवाइस पर विचार करें जिसमें मेरा आवेदन नहीं था, लेकिन मेरे इरादे फ़िल्टर का उपयोग करने वाले अनुप्रयोगों के साथ, बनाए गए इरादे से दस्तावेज़ परीक्षण में वर्णित कार्रवाई परीक्षण विफल हो जाएगा। क्या ऐसा होने से रोकने या बेहतर उपयोगकर्ता अनुभव देने का कोई तरीका है?उपयोगकर्ता को यह बताने के लिए कि उसे एक और ऐप इंस्टॉल करने की आवश्यकता है कि मेरा ऐप

  1. एक आवेदन है कि एक और आवेदन पत्र पर निर्भर करता है उद्देश्यों में से कुछ को संभालने के लिए स्थापित करने, वहीं अनुप्रयोग है कि कर सकते हैं स्थापित करने के लिए उपयोगकर्ता का सुझाव: यहाँ दृष्टिकोण मैं के बारे में सोच सकते हैं, लेकिन अगर वहाँ संभव है पता नहीं है में से कुछ हैं इरादा
  2. गतिशील रूप से निर्धारित करें कि इरादा को संभाला जा सकता है या नहीं। यदि नहीं, तो बाजार को लॉन्च करने वाले एप्लिकेशन को लॉन्च करें जो

इसे संभालने का सबसे अच्छा तरीका क्या है? यदि संभव हो तो कृपया कुछ कार्यान्वयन संदर्भ प्रदान करें।

+0

समान है http://stackoverflow.com/questions/7724579/android-dependencies –

उत्तर

3

बाज़ार में इसका उल्लेख करने के अलावा, मुझे यकीन नहीं है कि आप एप्लिकेशन स्थापना के दौरान संदेशों को प्रस्तुत करने के बारे में कैसे जाएंगे, क्योंकि (मेरे ज्ञान के लिए) स्थापना पर कोड निष्पादित करने का कोई समर्थित तरीका नहीं है।

यदि अन्य एप्लिकेशन आपके फ़िल्टर का उपयोग करते हैं, तो यह सुनिश्चित करने के लिए कि आपका पैकेज इंस्टॉल है, यह उनके ऊपर निर्भर है। आप वास्तव में स्थापित किए बिना कुछ भी नहीं दे सकते हैं।

वे यह देखने के लिए जांच कर सकते हैं कि PackageManager का उपयोग कर एक पैकेज स्थापित किया गया है, और जब वे आपके पैकेज को स्थापित करने की आवश्यकता है, तो उपयोगकर्ता को सूचित करने के लिए उनके तर्क को समायोजित करें। उदाहरण:

private boolean isInstalled(){ 
    ComponentName comp = new ComponentName("com.yourpackagestuff", "com.yourpackagestuff.TestClass"); 
    Intent intentName = new Intent().setComponent(comp); 
    List <ResolveInfo> list = ctx.getPackageManager().queryIntentActivities(intentName, PackageManager.MATCH_DEFAULT_ONLY); 
    return list.size() > 0; 
} 

इस प्रकार मैं कम से कम इसके बारे में जाऊंगा।

0

आप इरादे को कॉल करने का प्रयास कर सकते हैं और इसे ActivityNotFoundException पकड़ने पर पकड़ सकते हैं। अगर इसे फेंक दिया जाता है, तो आप जानते हैं कि यह अस्तित्व में नहीं है ताकि आप अपना बैकअप कोड कार्यान्वित कर सकें।

संबंधित मुद्दे

 संबंधित मुद्दे