Android安装与卸载应用

原创 2012年03月30日 00:13:51

 


/**

 * Demonstration of styled text resources.

 */

public class InstallApk extends Activity{

    static final int REQUEST_INSTALL = 1;

    static final int REQUEST_UNINSTALL = 2;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

 

        setContentView(R.layout.install_apk);

 

        // Watch for button clicks.

        Button button =(Button)findViewById(R.id.unknown_source);

        button.setOnClickListener(mUnknownSourceListener);

        button = (Button)findViewById(R.id.my_source);

        button.setOnClickListener(mMySourceListener);

        button = (Button)findViewById(R.id.replace);

        button.setOnClickListener(mReplaceListener);

        button = (Button)findViewById(R.id.uninstall);

        button.setOnClickListener(mUninstallListener);

        button = (Button)findViewById(R.id.uninstall_result);

        button.setOnClickListener(mUninstallResultListener);

    }

 

    @Override

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {

        if (requestCode == REQUEST_INSTALL) {

            if (resultCode == Activity.RESULT_OK) {

                Toast.makeText(this, "Install succeeded!", Toast.LENGTH_SHORT).show();

            } else if (resultCode == Activity.RESULT_CANCELED) {

                Toast.makeText(this, "Install canceled!", Toast.LENGTH_SHORT).show();

            } else {

                Toast.makeText(this, "Install Failed!", Toast.LENGTH_SHORT).show();

            }

        } else if (requestCode == REQUEST_UNINSTALL) {

            if (resultCode == Activity.RESULT_OK) {

                Toast.makeText(this, "Uninstall succeeded!", Toast.LENGTH_SHORT).show();

            } else if (resultCode == Activity.RESULT_CANCELED) {

                Toast.makeText(this, "Uninstall canceled!", Toast.LENGTH_SHORT).show();

            } else {

                Toast.makeText(this, "Uninstall Failed!", Toast.LENGTH_SHORT).show();

            }

        }

    }

 

    private OnClickListener mUnknownSourceListener = new OnClickListener() {

        public void onClick(View v) {

            Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);

            intent.setData(Uri.fromFile(prepareApk("HelloActivity.apk")));

            startActivity(intent);

        }

    };

 

    private OnClickListener mMySourceListener = new OnClickListener() {

        public void onClick(View v) {

            Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);

            intent.setData(Uri.fromFile(prepareApk("HelloActivity.apk")));

            intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);

            intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);

            intent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME,

                    getApplicationInfo().packageName);

            startActivityForResult(intent, REQUEST_INSTALL);

        }

    };

 

    private OnClickListener mReplaceListener = new OnClickListener(){

        public void onClick(View v) {

            Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);

            intent.setData(Uri.fromFile(prepareApk("HelloActivity.apk")));

            intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);

            intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);

            intent.putExtra(Intent.EXTRA_ALLOW_REPLACE, true);

            intent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME,

                    getApplicationInfo().packageName);

            startActivityForResult(intent, REQUEST_INSTALL);

        }

    };

 

    private OnClickListener mUninstallListener = new OnClickListener() {

        public void onClick(View v) {

            Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);

            intent.setData(Uri.parse(

                    "package:com.example.android.helloactivity"));

            startActivity(intent);

        }

    };

 

    private OnClickListener mUninstallResultListener = new OnClickListener() {

        public void onClick(View v) {

            Intent intent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE);

            intent.setData(Uri.parse(

                    "package:com.example.android.helloactivity"));

            intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);

            startActivityForResult(intent, REQUEST_UNINSTALL);

        }

    };

 

    private File prepareApk(StringassetName) {

        // Copy the given asset out into a file so that it can be installed.

        // Returns the path to the file.

        byte[] buffer = new byte[8192];

        InputStream is = null;

        FileOutputStream fout = null;

        try {

            is = getAssets().open(assetName);

            fout = openFileOutput("tmp.apk", Context.MODE_WORLD_READABLE);

            int n;

            while ((n=is.read(buffer)) >= 0) {

                fout.write(buffer, 0, n);

            }

        } catch (IOException e) {

            Log.i("InstallApk", "Failedtransferring", e);

        } finally {

            try {

                if (is != null) {

                    is.close();

                }

            } catch (IOException e) {

            }

            try {

                if (fout != null) {

                    fout.close();

                }

            } catch (IOException e) {

            }

        }

 

        return getFileStreamPath("tmp.apk");

    }

}

 

Android利用系统广播---监听应用程序安装和卸载

在android系统中,安装和卸载都会发送广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播。可以通过intent.getDataString()...
  • wangjia55
  • wangjia55
  • 2013年01月05日 20:25
  • 6677

Android APK安装与卸载机制

本文主要介绍Android系统如何实现APK安装、卸载、更新等操作。主要内容包括以下内容: 安装和卸载APK的方法有哪些,每种方法实现的原理是什么?APK安装和卸载过程中,系统数据发生了哪些...
  • zhangxu0922
  • zhangxu0922
  • 2016年07月18日 12:49
  • 4005

android 代码实现软件的静默安装,卸载功能(转载)

android 代码实现软件的静默安装,卸载功能 研究这个问题有一段时间,不过一直没有测试,就是需要在系统源码下进行编译,嫌麻烦就一直没动手。不过这次项目有这种需求,就必须要实现了。 an...
  • s2221219
  • s2221219
  • 2015年04月24日 14:51
  • 1306

传智播客_Andorid_20天精通Android开发视频_第11天视频_视频_06_应用安装和卸载

  • 2018年01月09日 15:10
  • 21.93MB
  • 下载

传智播客_Andorid_20天精通Android开发视频_第11天视频_视频_06_应用安装和卸载

  • 2018年01月09日 15:07
  • 21.93MB
  • 下载

传智播客_Andorid教程_20天从零到精通Android开发视频_第11天06_应用安装和卸载

  • 2017年11月03日 15:18
  • 21.93MB
  • 下载

android模拟器上应用程序的安装与卸载

  • 2012年07月12日 20:44
  • 721KB
  • 下载

Android 监听应用的安装和卸载

  • 2012年11月29日 18:11
  • 136KB
  • 下载

android应用程序的安装和卸载

A、软件安装代码实现,Action为Intent.ACTION_VIEW //安装程序的apk文件路径  String fileName = Environment.getExternalSt...
  • wuhualong1314
  • wuhualong1314
  • 2012年12月09日 22:20
  • 703

Android中实现静态的默认安装和卸载应用

最近好长时间都没有写blog了,主要是因为最近工作上的事以及下载Android源码的事耽误的(下载源码这件事会在后续的blog中写道,这个真的很有意义呀~~),那么今天来写点什么呢?主要的灵感来自于早...
  • qq_34015057
  • qq_34015057
  • 2016年09月27日 11:55
  • 327
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android安装与卸载应用
举报原因:
原因补充:

(最多只允许输入30个字)