关于android 如何安装 assets文件下的apk

来源:互联网 发布:intent 传递数据 编辑:程序博客网 时间:2024/05/18 00:57
public class MainActivity extends Activity {  
    Context mContext;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mContext = this;  
        //Toast.makeText(this, ""+Environment.getExternalStorageDirectory().getAbsolutePath(), 0).show();  
        if(copyApkFromAssets(this, "test.apk", Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.apk")){  
            Builder m = new AlertDialog.Builder(mContext)  
                .setIcon(R.drawable.ic_launcher).setMessage("是否安装?")  
                .setIcon(R.drawable.ic_launcher)  
                .setPositiveButton("yes", new OnClickListener() {  
                @Override  
                public void onClick(DialogInterface dialog, int which) {  
                Intent intent = new Intent(Intent.ACTION_VIEW);  
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
                intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.apk"),  
                                                       "application/vnd.android.package-archive");  
                                        mContext.startActivity(intent);  
                                        }  
                                    });  
            m.show();  
        }  
          
    }  
     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;  
     }  
}
0 0