返回顶部
首页 > 资讯 > 精选 >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://lsjlt.com/news/266373.html(转载时请注明来源链接)

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

猜你喜欢
  • 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+
    2024-04-02
  • Angular在一个页面中如何使用两个ng-app
    这篇文章主要为大家展示了“Angular在一个页面中如何使用两个ng-app”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular在一个页面中如何使用两个...
    99+
    2024-04-02
  • Android安装的app在哪个文件夹
    Android安装的应用程序(app)通常存储在设备的/data/app目录下。每个应用程序都有一个独特的文件夹,以其包名命名,并包...
    99+
    2023-09-14
    Android
  • 如何在Android开发中中实现一个App更新功能
    如何在Android开发中中实现一个App更新功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。开发环境:AndroidStudio2.1.2+gradle-2.10部分代...
    99+
    2023-05-31
    android pp roi
  • Python如何搭建一个web app
    点击打开链接https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432170937506ecfb2f6adf8e47...
    99+
    2023-01-31
    Python web app
  • centos7如何下载并安装一个rpm包
    centos7中下载并安装一个rpm包的方法:1、打开centos7终端;2、在centos7终端命令行中输入“yum -y install [package包名]”命令通过yum方式下载并安装一个指定的rpm包即可。具体操作步骤:在cen...
    99+
    2024-04-02
  • linux如何下载并安装一个rpm包
    ...
    99+
    2024-04-02
  • uni-app如何封装一个取色器组件
    这篇文章主要介绍了uni-app如何封装一个取色器组件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇uni-app如何封装一个取色器组件文章都会有所收获,下面我们一起来看看吧。那么 下面这个组件或许能解决您的烦...
    99+
    2023-07-05
  • 【Android Studio】创建第一个APP工程及生成APK安装包
    🌟博主领域:嵌入式领域&人工智能&软件开发 前言:本文详细介绍创建Android Studio第一个APP工程及打包生成APK安装包。 如下两个博客我记录了第一次创建项目时出现的问题,若你也遇见了同样的问题,可参考:...
    99+
    2024-01-21
    android studio android ide
  • Android开发中如何实现在一个程序中启动另一个程序
    Android开发中如何实现在一个程序中启动另一个程序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Android 开发有时需要在一个应用中启动另一个应用,比如...
    99+
    2023-05-31
    android roi
  • 如何在Linux上安装或卸载一个文件中列出的软件包
    这篇文章主要讲解了“如何在Linux上安装或卸载一个文件中列出的软件包”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Linux上安装或卸载一个文件中列出的软件包”吧!在某些情况下,你可...
    99+
    2023-06-16
  • python如何在一个py文件中获取另一个py文件中的值(一个或多个)
    目录如何在一个py文件中获取另一个py文件中的值(一个或多个)在一个py文件中调用另一个py文件中的变量一、目的二、解决方案三、实例演示如何在一个py文件中获取另一个py文件中的值(...
    99+
    2024-04-02
  • 如何在VMware上安装一个Android虚拟机
    当一些app需要安卓系统进行测试时,而恰好手上只有苹果的时候,往往需要安装一个Android虚拟机 安装虚拟机 常见的虚拟机有VirtualBox、VMware、Mircrosoft Virtual PC等,下面以VMware为例。在VMw...
    99+
    2023-08-16
    android android studio ide
  • android studio如何打开另一个项目
    要在Android Studio中打开另一个项目,可以按照以下步骤操作:1. 打开Android Studio。2. 在Androi...
    99+
    2023-09-27
    android
  • 如何在html中链接另一个html页面
    如何在html中链接另一个html页面?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更加...
    99+
    2023-06-06
  • windows cdrx8安装提示已安装另一个版本如何解决
    本篇内容主要讲解“windows cdrx8安装提示已安装另一个版本如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows cdrx8安装提示已安装另一个版本如何解决”吧!解决方法...
    99+
    2023-07-02
  • Android开发中怎么在App中实现一个内语言切换功能
    这期内容当中小编将会给大家带来有关Android开发中怎么在App中实现一个内语言切换功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码实现:布局文件(Data-Binding模式),很简单就是两行文...
    99+
    2023-05-31
    app android pp
  • php如何排除一个数组中在另一个数组内的元素
    这篇“php如何排除一个数组中在另一个数组内的元素”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何排除一个数组中在另...
    99+
    2023-07-05
  • 如何完全展开一个小部件并缩小另一个小部件
    问题内容 我想在使用 Fyne 创建的 go 应用程序中创建一个内联表单,其中的 Button 小部件旁边有一个 Entry 小部件。 Entry 小部件应占据所有可用空间,而 But...
    99+
    2024-02-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作