2011-10-11 15 views
17

यदि मैं कोई ऐप बनाता हूं जो किसी अन्य ऐप या ऐप्स (जैसे: फेसबुक और ट्विटर ऐप्स) पर निर्भर करता है, फिर भी वे इंस्टॉल नहीं हैं, तो उन निर्भरताओं की जांच करने और उन्हें अपने ऐप के रूप में स्थापित करने का एक तरीका है ?एक एंड्रॉइड ऐप कैसे बनाया जाए जो किसी अन्य ऐप पर निर्भर करता है?

उत्तर

18

मैंने यह मेरे आवेदन में किया जिसके लिए ज़क्सिंग स्कैनर ऐप स्थापित होना आवश्यक है। आप अंदर यह चाहते हैं अपने onclick या ontouch:

try{ 
    Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
    intent.setPackage("com.google.zxing.client.android"); 
    startActivityForResult(intent, 0); 
} catch (Exception e) { 
    createAlert("Barcode Scanner not installed!", "This application uses " + 
    "the open source barcode scanner by ZXing Team, you need to install " + 
    "this before you can use this software!", true); 
} 

जो बाहर सभी कि कोड बाहर छँटाई के बाद

public void createAlert(String title, String message, Boolean button) { 
    // http://androidideasblog.blogspot.com/2010/02/how-to-add-messagebox-in-android.html 
    AlertDialog alertDialog; 
    alertDialog = new AlertDialog.Builder(this).create(); 
    alertDialog.setTitle(title); 
    alertDialog.setMessage(message); 
    if ((button == true)) { 
     alertDialog.setButton("Download Now", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface arg0, int arg1) { 
       Intent browserIntent = new Intent(
        Intent.ACTION_VIEW, 
        Uri.parse("market://search?q=pname:com.google.zxing.client.android")); 
       startActivity(browserIntent); 
      } 
     }); 
    } 
    alertDialog.show(); 
} 

फिर कहता है मुझे पता है आप से पूछा यह रूप में एक ही समय में स्थापित होने के लिए के लिए आपका ऐप। सुनिश्चित नहीं है कि मुझे यह कोड पोस्ट करना चाहिए, लेकिन यह उपयोगी हो सकता है

+3

मुझे नहीं लगता कि आपको केवल "अपवाद" पकड़ना चाहिए जो कि व्यापक रूप से थोड़ा सा है, वास्तविक अपवाद उदाहरण को पकड़ना शायद बेहतर होगा। – AGrunewald

+1

@AGrunewald मैं पूरी तरह से सहमत हूं! :) मैं कभी-कभी असाधारण रूप से आलसी हूं – TerryProbert

5

इस से प्रारंभ:

Intent mediaIntent = new Intent("com.example.intent.action.NAME"); 
// add needed categories 
List<ResolveInfo> listResolveInfo = getPackageManager().queryIntentServices(mediaIntent, 0); 
if (listResolveInfo.size() != 0) { 
    //normal behavior 
} else { 
    //install what you need 
} 

मैं तुम्हें सेवाओं की क्वेरी का उदाहरण देते हैं। यदि आप गतिविधियों की जांच करना चाहते हैं, तो आप queryIntentActivities() को कॉल करेंगे।

8

संक्षिप्त उत्तर: नहीं, आप अन्य अनुप्रयोगों को निर्भरता के रूप में स्वचालित रूप से इंस्टॉल नहीं कर सकते हैं।

लंबे समय तक जवाब:

Android Market आपको अन्य अनुप्रयोगों एक निर्भरता के रूप में स्थापित करने के लिए की घोषणा नहीं देता। एक प्रणाली के रूप में, बाजार एकल एप्लिकेशन इंस्टॉल के लिए डिज़ाइन किया गया प्रतीत होता है - लिनक्स डिस्ट्रो शैली मेगा निर्भरता ग्राफ नहीं।

क्रम पर, आप इंस्टॉल किए गए एप्लिकेशन के लिए परीक्षण और अपने उपयोगकर्ता बाजार यदि ऐसा है तो के लिए खत्म हो बाज़ी कर सकते हैं। @QuickNick द्वारा सुझाए गए तकनीकों को देखें (यदि कोई ऐप इंस्टॉल हो रहा है) और @TerryProbert (बाजार में पंसद करना) यदि आप यही चाहते हैं।

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

4

मुझे लगता है कि एंड्रॉइड डेवलपर ब्लॉग पर इस पोस्ट में उल्लिखित पैटर्न के बाद आपको मदद मिलेगी। http://android-developers.blogspot.com/2009/01/can-i-use-this-intent.html टेरीप्रोबर्ट बताते हैं कि यदि आप जानते हैं कि इरादा उपलब्ध नहीं है तो उपयोगकर्ता लापता ऐप इंस्टॉल करने के लिए संकेत देता है।

   try { 
       Class<?> missionClass = Class.forName(mPackageName+".Mission"+mission); 
         Method missionDescription; 
         missionDescription = missionClass.getMethod("missionDescription"); 
         mMissionDescription = (String) missionDescription.invoke(null); 
         if (mMissionDescription.length() > 0) { 
          nextMission = mission; 
          break; 
         } 
        } catch (Exception e) { 
         //DEBUG*/Log.v(this.getClass().getName(), "onResume: Mission no "+mission+" not found: "+e.getMessage()); 
        } 

प्रत्येक मिशन एक अलग वर्ग में आयोजित किया जाता है, एक मिशन आधार वर्ग से प्राप्त:

2

यहाँ मैं क्या पहला मिशन गतिविधि है कि मौजूद है वापस जाने के लिए उपयोग करते हैं। व्युत्पन्न कक्षाओं को मिशन 1, मिशन 24 आदि कहा जाता है

सभी मिशन परिभाषित नहीं किए गए हैं।

बेस क्लास में एक अमूर्त वर्ग मिशन डिस्क्रिप्शन है जो मिशन का वर्णन करने वाली स्ट्रिंग देता है।

यह कोड एक लूप के अंदर है इसलिए मिशन = 1 से 99 परीक्षण, मिशन डिस्क्रिप्शन को कॉल करने का प्रयास कर रहा है। यह तब आता है जब पहले मिशन के विवरण को वापस कर दिया जाता है।

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

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