iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android如何在一个app中安装并卸载另一个app
  • 563
分享到

Android如何在一个app中安装并卸载另一个app

2023-06-13 08:06:33 563人浏览 独家记忆
摘要

这篇文章主要介绍“Android如何在一个app中安装并卸载另一个app”,在日常操作中,相信很多人在Android如何在一个app中安装并卸载另一个app问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”And

这篇文章主要介绍“Android如何在一个app中安装并卸载另一个app”,在日常操作中,相信很多人在Android如何在一个app中安装并卸载另一个app问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android如何在一个app中安装并卸载另一个app”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Android在一个app中安装并卸载另一个app

在app→src→main下新建文件夹asserts,将准备安装的apk文件放在asserts内

在app→src→main→res下新建文件夹xml,右击xml文件夹,选择new→XML Resource File,File name为文件名,可随意,本文中为filepaths;Root element为资源类型,输入paths,确定并编辑以下代码:

<?xml version="1.0" encoding="utf-8"?><paths xmlns:android="Http://schemas.android.com/apk/res/android"> <external-path name="external_files" path="."/></paths>

编辑AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.myapplication"> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <application  android:allowBackup="true"  android:icon="@mipmap/ic_launcher"  android:label="@string/app_name"  android:roundIcon="@mipmap/ic_launcher_round"  android:supportsRtl="true"  android:requestLegacyExternalStorage="true"  android:theme="@style/Theme.MyApplication">  <provider   android:name="androidx.core.content.FileProvider"   android:authorities="包名"   android:exported="false"   android:grantUriPermissions="true">   <meta-data   android:name="android.support.FILE_PROVIDER_PATHS"    android:resource="@xml/filepaths步骤2中的文件"    />  </provider>  <activity android:name=".MainActivity">   <intent-filter>    <action android:name="android.intent.action.MAIN" />    <cateGory android:name="android.intent.category.LAUNCHER" />   </intent-filter>  </activity> </application></manifest>

MainActivity.java

public class MainActivity extends AppCompatActivity { Context mContext; private Button bt,bt0; private TextView tx; public static boolean isGrantExternalRW(Activity activity) { //权限判定  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && activity.checkSelfPermission(    Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {   activity.requestPermissions(new String[]{     Manifest.permission.READ_EXTERNAL_STORAGE,     Manifest.permission.WRITE_EXTERNAL_STORAGE   }, 1);   return false;  }  return true; } @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  mContext = this;  tx=findViewById(R.id.text);  bt=findViewById(R.id.button);//安装  bt0=findViewById(R.id.button0);//卸载//  Toast.makeText(this, ""+Environment.getExternalStorageDirectory().getAbsolutePath(), 0).show();  if(!this.isGrantExternalRW(MainActivity.this)){return;}//判断是否有权限修改,这很重要  else{  if(copyApkFromAssets(this, "app-debug.apk", Environment.getExternalStorageDirectory().getAbsolutePath()+"/app-debug.apk")){   bt.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {     new AlertDialog.Builder(mContext)       .setIcon(R.drawable.ic_launcher)       .setMessage("是否安装?")       .setPositiveButton("yes", new DialogInterface.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()+"/app-debug.apk"),//           "application/vnd.android.package-arcHive");         File apkFile = new File(Environment.getExternalStorageDirectory()+"/app-debug.apk");         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {          intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);          Uri uri = FileProvider.getUriForFile(MainActivity.this, "com.example.myapplication", apkFile);          intent.setDataAndType(uri, "application/vnd.android.package-archive");         } else {          intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");         }         mContext.startActivity(intent);        }       }).show();    }   });   bt0.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {     Uri packageURI = Uri.parse("package:com.example.a22");//package:+想要卸载的包名     Intent intent =new Intent(Intent.ACTION_DELETE);     intent.setData(packageURI);     mContext.startActivity(intent);    }   });  } }} public boolean copyApkFromAssets(Context context, String fileName, String path) { //将asserts中的apk文件复制到手机存储中 //可以从手机存储划到最下面,是单独的文件,没有设置文件夹  boolean copyIsFinish = false;  try {   InputStream is = context.getAssets().open(fileName);   File file = new File(path);   file.createNewFile();   FileOutputStream fos = new FileOutputStream(file);   int length = is.available();   byte[] temp = new byte[length];   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; }}

网络上的教程有很多自相矛盾,本人防止权限出错,把能加的权限都设置了一遍,有空可以选择测试一下,应该有的可以删掉

到此,关于“Android如何在一个app中安装并卸载另一个app”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Android如何在一个app中安装并卸载另一个app

本文链接: https://www.lsjlt.com/news/266373.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android如何在一个app中安装并卸载另一个app
    这篇文章主要介绍“Android如何在一个app中安装并卸载另一个app”,在日常操作中,相信很多人在Android如何在一个app中安装并卸载另一个app问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”And...
    99+
    2023-06-13
  • Android在一个app中安装并卸载另一个app的示例代码
    Android在一个app中安装并卸载另一个app 1.在app→src→main下新建文件夹asserts,将准备安装的apk文件放在asserts内 2.在app→src→mai...
    99+
    2022-11-11
  • Angular在一个页面中如何使用两个ng-app
    这篇文章主要为大家展示了“Angular在一个页面中如何使用两个ng-app”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular在一个页面中如何使用两个...
    99+
    2022-10-19
  • 如何在Android开发中中实现一个App更新功能
    如何在Android开发中中实现一个App更新功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。开发环境:AndroidStudio2.1.2+gradle-2.10部分代...
    99+
    2023-05-31
    android pp roi
  • centos7如何下载并安装一个rpm包
    centos7中下载并安装一个rpm包的方法:1、打开centos7终端;2、在centos7终端命令行中输入“yum -y install [package包名]”命令通过yum方式下载并安装一个指定的rpm包即可。具体操作步骤:在cen...
    99+
    2022-10-08
  • Android开发中如何实现在一个程序中启动另一个程序
    Android开发中如何实现在一个程序中启动另一个程序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android 开发有时需要在一个应用中启动另一个应用,比如...
    99+
    2023-05-31
    android roi
  • 如何在Linux上安装或卸载一个文件中列出的软件包
    这篇文章主要讲解了“如何在Linux上安装或卸载一个文件中列出的软件包”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Linux上安装或卸载一个文件中列出的软件包”吧!在某些情况下,你可...
    99+
    2023-06-16
  • 如何在VMware上安装一个Android虚拟机
    当一些app需要安卓系统进行测试时,而恰好手上只有苹果的时候,往往需要安装一个Android虚拟机 安装虚拟机 常见的虚拟机有VirtualBox、VMware、Mircrosoft Virtual PC等,下面以VMware为例。在VMw...
    99+
    2023-08-16
    android android studio ide
  • 如何在Android中利用Recyclerview实现一个上拉加载功能
    如何在Android中利用Recyclerview实现一个上拉加载功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在项目中使用列表的下拉刷新和上拉加载更多是很常见的功能,下拉...
    99+
    2023-05-31
    android recyclerview recycle
  • Android中如何在安卓上开发一个微笑抓拍神器
    这篇文章主要介绍“Android中如何在安卓上开发一个微笑抓拍神器”,在日常操作中,相信很多人在Android中如何在安卓上开发一个微笑抓拍神器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android中如...
    99+
    2023-06-04
  • 如何在Android应用中利用ADT实现一个离线下载功能
    今天就跟大家聊聊有关如何在Android应用中利用ADT实现一个离线下载功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Android ADT 离线下载操作步骤可以利用在线安装地址...
    99+
    2023-05-31
    android adt roi
  • Android 静默安装如何实现(需要有ROOT权限),静默安装就是:app自动下载,自动安装,自动重新启动(可以设置重新启动打开哪个活动)
    前提是手机需要被ROOT,也就是安卓设备需要被ROOT。需要知道apk文件的保存路径(绝对路径) 请看java代码 //需要传下载后的apk的绝对路径和当前上下文,这个方法的返回值表示为:安装...
    99+
    2023-10-07
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作