网络下载apk直接安装


package feng.f8_6.activity;
002  
003import java.io.File;
004import java.io.FileOutputStream;
005import java.io.InputStream;
006import java.net.HttpURLConnection;
007import java.net.MalformedURLException;
008import java.net.URL;
009  
010import android.app.Activity;
011import android.content.Intent;
012import android.net.Uri;
013import android.os.Bundle;
014import android.os.Environment;
015import android.os.Handler;
016import android.os.Message;
017import android.view.Menu;
018import android.view.View;
019import android.view.View.OnClickListener;
020import android.widget.Button;
021import android.widget.Toast;
022  
023public class HttpActivity extends Activity {
024  
025    private Button btn;
026  
027    @Override
028    public void onCreate(Bundle savedInstanceState) {
029        super.onCreate(savedInstanceState);
030        setContentView(R.layout.main);
031  
032        btn = (Button) findViewById(R.id.button1);
033        btn.setOnClickListener(new OnClickListener() {
034  
035            @Override
036            public void onClick(View v) {
037                new Thread() {
038                    public void run() {
039                        // 地址网上可用哦
040                        String path = "http://res.neng.com/res/apk_sp/20120803/8124_com.mobi.filemanager.activity_163508.apk";
041//                      String path = "http://192.168.1.62:8080/MyHttpTest.apk";
042                        try {
043                            URL url = new URL(path);
044                            HttpURLConnection conn = (HttpURLConnection) url
045                                    .openConnection();
046                            if (HttpURLConnection.HTTP_OK != conn
047                                    .getResponseCode()) {
048                                Message message = Message.obtain();
049                                message.what = 1;
050                                handler.sendMessage(message);
051                            } else {
052                                if (Environment.getExternalStorageState()
053                                        .equals(Environment.MEDIA_UNMOUNTED)) {
054                                     Message message=Message.obtain();
055                                     message.what=2;
056                                     handler.sendMessage(message);
057                                } else {
058                                    // System.out.println("获取信息的长度:"+conn.getContentLength());
059                                    File file = new File(Environment
060                                            .getExternalStorageDirectory()
061                                            + "/feng");
062                                    if (!file.exists()) {
063                                        file.mkdir();
064                                    }
065                                    // System.out.println("file.getPath():"
066                                    // + file.getPath());
067                                    // System.out.println("getContentLength:"
068                                    // + conn.getContentLength());
069                                    File cfile = new File(file.getPath(),
070                                            "activity_163508.apk");
071                                    if (!cfile.exists()) {
072                                        cfile.createNewFile();
073                                    }
074                                    InputStream is = conn.getInputStream();
075                                    FileOutputStream os = new FileOutputStream(
076                                            cfile);
077                                    byte[] buffer = new byte[2048];
078                                    int a=0;
079                                    while ((a=is.read(buffer)) != -1) {
080                                        os.write(buffer, 0, a);
081                                    }
082//                                  System.out.println("cfile.getName()"+cfile.getName());
083                                    is.close();
084                                    os.flush();
085                                    os.close();
086                                    Bundle bundle=new Bundle();
087                                    Message message=Message.obtain();
088                                    message.what=3;
089                                    bundle.putString("msg", cfile.getAbsolutePath());
090                                    message.setData(bundle);
091                                    handler.sendMessage(message);
092                                }
093                            }
094                        } catch (Exception e) {
095                            // TODO Auto-generated catch block
096                            e.printStackTrace();
097                        }
098  
099                    };
100                }.start();
101            }
102        });
103    }
104  
105    private void installAPK(String fileName){
106        File file =new File(fileName);
107        if(!file.exists()){
108            return;
109        }
110        Intent intent=new Intent();
111        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
112        intent.setAction(Intent.ACTION_VIEW);
113        intent.setDataAndType(Uri.parse("file://"+file.toString()), "application/vnd.android.package-archive");
114        startActivity(intent);
115    }
116    Handler handler = new Handler() {
117        public void handleMessage(android.os.Message msg) {
118            switch (msg.what) {
119            case 1:
120                Toast.makeText(getApplicationContext(), "网络不通",
121                        Toast.LENGTH_SHORT).show();
122                break;
123            case 2:
124                 Toast.makeText(getApplicationContext(), "没有SD卡",
125                 Toast.LENGTH_SHORT).show();
126                   
127                break;
128            case 3:
129                Bundle bundle = msg.getData();
130                String fileName = bundle.getString("msg");
131                installAPK(fileName);
132                  
133                break;
134  
135            default:
136                break;
137            }
138        };
139    };
140  
141    @Override
142    public boolean onCreateOptionsMenu(Menu menu) {
143        getMenuInflater().inflate(R.menu.main, menu);
144        return true;
145    }
146}
147  
148  
149  
150<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
151    xmlns:tools="http://schemas.android.com/tools"
152    android:layout_width="match_parent"
153    android:layout_height="match_parent" >
154  
155    <Button
156        android:id="@+id/button1"
157        android:layout_width="wrap_content"
158        android:layout_height="wrap_content"
159        android:layout_alignParentLeft="true"
160        android:layout_alignParentTop="true"
161        android:layout_marginLeft="43dp"
162        android:layout_marginTop="19dp"
163        android:text="Button" />
164  
165</RelativeLayout>

超级备份与还原 Android手机上最快的数据备份和还原工具!您可以将应用程序,联系人,短信,通话记录,书签,日历备份到SD卡,Gmail或Google云端硬盘中。 您可以一键分享安装APK文件给您的朋友。您将再也不会丢失数据! ★重要注意事项#1 如果您打算在手机上恢复出厂设置,请在执行操作前确保默认备份文件夹位于外部SD卡中。如果没有,请复制整个备份文件夹(默认情况下为“ SmsContactsBackup”)到外部SD卡 ★重要注意事项#2 自Android M起,第3个应用程序的访问书签均已禁用,因此超级备份无法备份和还原书签。 ★重要注意事项#3 如果您计划自动备份,并且使用了诸如Task Killer或Memory Clear之类的应用程序,请确保已将“超级备份”添加到其“白名单”或“忽略”列表中。否则,超级备份将无法在后台运行,并且自动备份将无法工作。 ★重要注意事项#4 完成SMS还原过程后,但默认的SMS应用程序中未显示消息,请尝试重新启动设备。 功能: –将应用程序备份到SD卡 –备份已安装应用程序的Google Play下载链接 –备份和还原应用程序的数据(需要根) –从SD卡批量还原应用程序(需要根) –一键共享APK文件 –备份联系人和短信和通话记录,书签和日历到SD卡 – 从SD卡还原联系人和SMS和通话记录以及书签和日历 –可以选择要备份的SMS对话 –删除SD卡上的备份数据 –安排自动备份 – 计划安排自动备份文件到您的Google云端硬盘或Gmail中 –可以从Google云端硬盘下载备份文件 –显示上次备份的次数和时间 –用户可以在“设置”中更改备份文件夹的路径 –可以备份联系人的组和图片属性 关于权限: 读取您的短信(SMS或MMS)/编辑您的短信(SMS或MMS) 这些权限用于备份和还原您的SMS 读取您的联系人/修改您的联系人 这些权限用于备份和还原您的联系人 WRITE Web书签和历史记录/阅读您的Web书签和历史记录 这些权限用于备份和还原书签, 阅读日历事件以及机密信息/添加或修改日历事件,并在没有所有者知识的情况 下将电子邮件发送给来宾,这些知识用于备份和还原。您的日历 读呼叫日志/写呼叫日志 这些权限用于备份和恢复您的呼叫日志 什么是新的 支持备份您的语音通话录音。它可以完美地将电话语音记录到mp3文件中。 修复一些崩溃错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值