2011-03-25 21 views
6

इंस्टॉल करने के लिए कैसे मैं अपने आवेदन से एक एपीके फ़ाइल स्थापित करना चाहता हूं।एपीके फ़ाइल प्रोग्रामेटिक रूप से

मैं एक ऐप्स जब मुझे लगता है कि बटन पर क्लिक करें फिर एक और apk कि मैं संसाधन फ़ोल्डर में संग्रहीत है स्थापित किया जाना चाहिए कि, एक बटन होता है,
यहाँ कुछ मैंने किया है बनाया है:

public void onClick(View v) { 
    // Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
    // intent.setPackage("com.google.zxing.client.android"); 
    // intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
    // startActivityForResult(intent, 0); 
    File file = new File("android.resource://com.app.barcodescanner/raw", "scan.apk"); 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); 
    startActivity(intent); 
} 

किसी भी विचार?
कृपया मुझे

उत्तर

14
Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setDataAndType(Uri.fromFile(new File 
      (Environment.getExternalStorageDirectory() + "/barcode.apk")), "application/vnd.android.package-archive"); 
    startActivity(intent); 
+1

पहले एसडी कार्ड प्रोग्रामेटिक रूप से एपीके फ़ाइल कॉपी करें और फिर उपर्युक्त चरण – sUrAj

+1

करें क्या यह उपयोगकर्ता को स्वीकार करने के लिए एक संकेत देगा? यदि हाँ इससे बचने के लिए कोई कामकाज है? –

+0

इंस्टॉलेशन पूरा होने के बाद मैं इसे फिर से खोल सकता हूं? – zionpi

2

के साथ मेरी सहायता करें शायद यह android.resourceUri के साथ काम नहीं करेगा। एपीके को बाह्य भंडारण में कॉपी करने और वहां से इंस्टॉल करने का प्रयास करें।

+0

मेरे पास एक साधारण सवाल है। मैंने नेट से अपना एपीके डाउनलोड किया और डाउनलोड एपीके अपडेट करने जा रहा है। अब मैं जानना चाहता हूं कि मैं दोनों को सिंक्रनाइज़ कैसे करूं, इसका मतलब है कि प्रगति पट्टी को दोनों डाउनलोड और अपलोड गतिविधि को प्रदर्शित करने की आवश्यकता है। इस – AndroidOptimist

+0

में मेरी सहायता करें @AndroidOptimist: यदि "अपलोड गतिविधि" का अर्थ वास्तव में "अद्यतन गतिविधि" है, तो यह संभव नहीं है। आपकी ऐप अपडेट होने पर आपकी प्रक्रिया नहीं चल रही होगी। इसके अलावा, आपका यूआई अपडेट शुरू होने से पहले दिखाई नहीं देगा, क्योंकि * उपयोगकर्ता * को अद्यतन शुरू करना है और * उपयोगकर्ता * को अद्यतन को स्वीकृति देना है। – CommonsWare

0
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    File DbFile=new File("mnt/sdcard/HelloAndroid.apk"); 
    if(!(DbFile.exists())) 
    { 
     try 
     { 
      int length = 0; 
      DbFile.createNewFile(); 
      InputStream inputStream = this.getAssets().open("HelloAndroid.apk"); 
      FileOutputStream fOutputStream = new FileOutputStream(DbFile); 
      byte[] buffer = new byte[inputStream.available()]; 
      while ((length = inputStream.read(buffer)) > 0) 
      { 
       fOutputStream.write(buffer, 0, length); 
      } 
      fOutputStream.flush(); 
      fOutputStream.close(); 
      inputStream.close(); 
     } 
     catch (Exception ex) 
     { 
      System.out.println("Error in creating new database at mobile..." + ex); 
      ex.printStackTrace(); 
     } 
    } 

    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setDataAndType(Uri.fromFile(new File("/mnt/sdcard/HelloAndroid.apk")), "application/vnd.android.package-archive"); 
    startActivity(intent); 
} 

यहाँ मैं संपत्ति फ़ोल्डर में मेरी apk फ़ाइल को संग्रहीत किया है। आप इसे आजमा सकते हैं।

+0

क्यों न सिर्फ 'intent.setDataAndType (Uri.fromFile (DbFile)), "application/vnd.android.package-archive") '? – Pierre

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