Andriod 同时安装多个软件.捆绑

现在碰到这么一个需求,在已有App安装时,需要判断另一个app是否安装.以及自动安装.

 

思路如下,在assets目录下.放另一个apk.文件.

 

1.采取之前文章说到的,判断某个包名是否安装了.

如果没有安装则跳转到第2步.

 

2.检测并安装插件制作.

[java]   view plain copy print ?
  1. package 你的包名;  
  2.    
  3.   
  4. import java.io.File;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8.   
  9. import org.apache.cordova.api.CallbackContext;  
  10. import org.apache.cordova.api.CordovaPlugin;  
  11. import org.json.JSONArray;  
  12. import org.json.JSONException;  
  13.   
  14. import android.app.AlertDialog;  
  15.   
  16. import android.content.Context;  
  17. import android.content.DialogInterface;  
  18. import android.content.Intent;  
  19. import android.content.DialogInterface.OnClickListener;  
  20. import android.net.Uri;  
  21. import android.os.Environment;  
  22. import android.view.Gravity;  
  23.   
  24. import android.widget.Toast;  
  25.   
  26.   
  27.   
  28. public class GetApk extends CordovaPlugin {  
  29.       
  30.       
  31.     @Override  
  32.     public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {  
  33.            
  34.         if (action.equals("GetApk")) {  
  35.               
  36.             Toast tips;  
  37.                
  38.               
  39.             tips = Toast.makeText(cordova.getActivity(), "", Toast.LENGTH_SHORT);  
  40.             tips.setGravity(Gravity.CENTER, 00);  
  41.   
  42.                         //这里的xxxx.apk我是放到assets目录下.   
  43.                         //也可以不要这段,直接用下面的下载              
  44.               
  45.               
  46.                
  47.             try {  
  48.                  if(copyApkFromAssets(cordova.getActivity(), "xxxx.apk", Environment.getExternalStorageDirectory().getAbsolutePath()+"/xxxx.apk"))  
  49.                  {    
  50.                      Intent intent = new Intent(Intent.ACTION_VIEW);    
  51.                      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
  52.                      intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/xxxx.apk"),    
  53.                                     "application/vnd.android.package-archive");    
  54.                      cordova.getActivity().startActivity(intent);   
  55.                  }   
  56.                  else  
  57.                  {  
  58.                        
  59.                         new AlertDialog.Builder(cordova.getActivity())  
  60.                                 .setTitle("install dhbm")  
  61.                                 .setMessage("Please confirm you want to install dhbm")  
  62.                                 .setPositiveButton("submit",  
  63.                                         new OnClickListener() {  
  64.                                             public void onClick(  
  65.                                                     DialogInterface dialog,  
  66.                                                     int which) {  
  67.                                                 try {  
  68.                                                     Uri uri = Uri  
  69.                                                             .parse("http://www.xx.com/xxxx.apk");  
  70.                                                     Intent it = new Intent(  
  71.                                                             Intent.ACTION_VIEW,  
  72.                                                             uri);  
  73.                                                     cordova.getActivity().startActivity(it);  
  74.                                                 } catch (Exception e) {  
  75.                                                 }  
  76.                                             }  
  77.                                         })  
  78.                                 .setNegativeButton("cancel",  
  79.                                         new OnClickListener() {  
  80.                                             public void onClick(  
  81.                                                     DialogInterface dialog,  
  82.                                                     int which) {  
  83.                                             }  
  84.                                         }).show();  
  85.                  }  
  86.             }   
  87.             catch (Exception e) {  
  88.                    
  89.                 e.printStackTrace();  
  90.             }  
  91.                
  92.             return true;  
  93.               
  94.         }  
  95.         return false;  
  96.     }  
  97.       
  98.     public boolean copyApkFromAssets(Context context, String fileName, String path) {    
  99.         boolean copyIsFinish = false;    
  100.        try {    
  101.            InputStream is = context.getAssets().open(fileName);    
  102.            File file = new File(path);    
  103.             file.createNewFile();    
  104.             FileOutputStream fos = new FileOutputStream(file);    
  105.            byte[] temp = new byte[1024];    
  106.            int i = 0;    
  107.            while ((i = is.read(temp)) > 0) {    
  108.                fos.write(temp, 0, i);    
  109.            }    
  110.            fos.close();    
  111.            is.close();    
  112.             copyIsFinish = true;    
  113.         } catch (IOException e) {    
  114.             e.printStackTrace();    
  115.         }    
  116.         return copyIsFinish;    
  117.    }  
  118.   
  119.   
  120. }  
  121.    
package 你的包名;
 
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
 
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
 
import android.app.AlertDialog;
 
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.net.Uri;
import android.os.Environment;
import android.view.Gravity;
 
import android.widget.Toast;
 
 
 
public class GetApk extends CordovaPlugin {
 
 
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
 
        if (action.equals("GetApk")) {
 
            Toast tips;
 
 
            tips = Toast.makeText(cordova.getActivity(), "", Toast.LENGTH_SHORT);
            tips.setGravity(Gravity.CENTER, 0, 0);
 
                        //这里的xxxx.apk我是放到assets目录下.
                        //也可以不要这段,直接用下面的下载            
 
 
 
            try {
                 if(copyApkFromAssets(cordova.getActivity(), "xxxx.apk", Environment.getExternalStorageDirectory().getAbsolutePath()+"/xxxx.apk"))
                 { 
                     Intent intent = new Intent(Intent.ACTION_VIEW); 
                     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
                     intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/xxxx.apk"), 
                                    "application/vnd.android.package-archive"); 
                     cordova.getActivity().startActivity(intent);
                 }
                 else
                 {
 
                        new AlertDialog.Builder(cordova.getActivity())
                                .setTitle("install dhbm")
                                .setMessage("Please confirm you want to install dhbm")
                                .setPositiveButton("submit",
                                        new OnClickListener() {
                                            public void onClick(
                                                    DialogInterface dialog,
                                                    int which) {
                                                try {
                                                    Uri uri = Uri
                                                            .parse("http://www.xx.com/xxxx.apk");
                                                    Intent it = new Intent(
                                                            Intent.ACTION_VIEW,
                                                            uri);
                                                    cordova.getActivity().startActivity(it);
                                                } catch (Exception e) {
                                                }
                                            }
                                        })
                                .setNegativeButton("cancel",
                                        new OnClickListener() {
                                            public void onClick(
                                                    DialogInterface dialog,
                                                    int which) {
                                            }
                                        }).show();
                 }
            }
            catch (Exception e) {
 
                e.printStackTrace();
            }
 
            return true;
 
        }
        return false;
    }
 
    public boolean copyApkFromAssets(Context context, String fileName, String path) { 
        boolean copyIsFinish = false; 
       try { 
           InputStream is = context.getAssets().open(fileName); 
           File file = new File(path); 
            file.createNewFile(); 
            FileOutputStream fos = new FileOutputStream(file); 
           byte[] temp = new byte[1024]; 
           int i = 0; 
           while ((i = is.read(temp)) > 0) { 
               fos.write(temp, 0, i); 
           } 
           fos.close(); 
           is.close(); 
            copyIsFinish = true; 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        return copyIsFinish; 
   }
 
 
}
详情点击  http://url.cn/RTBgdY
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值