`

两个应用同时存在的情况处理

 
阅读更多
1.应用场景:对于我们自己开发的两个应用程序,一个应用程序的包名为 aa.bb.cc,软件名叫a,它的入口Activity为 aaActivity(入口activity就是在AndroidManifest.xml中标签——<action android:name="android.intent.action.MAIN" />所在的activity,说白了,就是打开应用程序,第一个显示的activity),另一个应用程序的包名为 xx.yy.zz,软件名叫x,它的入口Activity为 xxActivity。
    网上的通用做法如下(这里我假设a中有一个Button,这个Button的onclick事件中的代码如下):
    ComponentName componentName=new   ComponentName("xx.yy.zz","xx.yy.zz.xxActivity");  
                Intent intent=new Intent();  
                intent.setComponent(componentName);  
                intent.setAction(Intent.ACTION_VIEW);  
                startActivity(intent);
    这种方法对于调用我们自己写的应用程序没有问题,但是如果你想调用别人的应用程序(例如:你写了一个游戏管理的软件,需要管理很多游戏,但是游戏不是你写的,你是得不到入口activity的,你怎么办?),解决办法如下:
    通过PackageManager可以得到PackageInfo,通过PackageInfo就可以得到你手机上安装的应用的包名(这个很简单,网上有的是,不赘述)。关键是下一步,代码如下(也是a应用中Button的onclick中的代码):
    PackageManager packageManager = Start_RemoveSoftActivity.this.getPackageManager();
Intent intent=new Intent();
    try {
    intent =packageManager.getLaunchIntentForPackage("要调用应用的包名");
} catch (NameNotFoundException e) {
Log.i(TAG, e.toString());
}
startActivity(intent);
    其中,"要调用应用的包名"为通过PackageInfo得到的想要启动的应用的包名。这样,我们就可以不知道别人应用源码的情况下,也可以调用别人的应用程序。
3.通过代码在应用中安装已有的APK
需要将apk拷贝至shared_prefs文件夹下

(Eclipse下工具栏window-->show view-->other-->Android-->File Explorer,

也许打开的File Explorer为空白,这个你肯定忘了先运行下面代码构成的工程。出现目录后找到data/data/工程包名/shared_prefs,ok)

public class APKTest extends Activity
{
private SharedPreferences metafer = null;
ApplicationInfo mAppInfo = null;
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //apk安装或卸载路径
        String installPath = "/data/data/com.hyz/shared_prefs/matchmusic.apk";
        //新建shared_prefs文件夹
        mkShared_prefs();
        //安装apk
        installApk(installPath);
        //卸载apk
        dumpApk(installPath);
    }
    public void dumpApk(String path)
    {
     ApplicationInfo mAppInfo = null;
        PackageManager pm = getApplicationContext().getPackageManager();
        PackageInfo info = pm.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES);
        if(info != null)
        {
         mAppInfo = info.applicationInfo;
        }
        Uri uri = Uri.fromParts("package", mAppInfo.packageName, null);
        Intent it = new Intent(Intent.ACTION_DELETE, uri);
        startActivity(it);
    }
    public void installApk(String path)
    {
     Intent ret = new Intent();
     ret.setDataAndType(Uri.fromFile(new File(path)),"application/vnd.android.package-archive");
        ret.setAction(Intent.ACTION_VIEW);
        startActivity(ret);
    }
    public void mkShared_prefs()
    {
     if (metafer == null)
     {
  // metafer = getSharedPreferences("Vdmc", 0);
      metafer =  PreferenceManager.getDefaultSharedPreferences(this); 
  }
     SharedPreferences.Editor editor = metafer.edit();
  //editor.putString("IMSI", "");
  editor.commit();
    }
}




分享到:
评论

相关推荐

    分布式应用日志管理Log4Grid.zip

    Log4Grid 是一款开源分布式应用监控和日志管理系统,通过该系统可以实时查看每个应用的进程情况外还能看到相应用户记录的程序处理日志信息。为了保证不对用户现有程序的改动,Log4Grid提供相应Log4Net的日志插件,...

    图像处理在人工智能领域的应用.docx

    图像处理在人工智能领域的应用 摘要:随着科技的快速发展,人工智能技术在我国焕发出强烈生机活力。最初提出人工智能这个概念的主要目的是为了使机器能够像人脑一样处理信息,使机器能够在短时间内捕捉有用的信息。...

    SNS社交网络中实时找朋友和朋友链的应用案例

    现有关系型数据库中,对系统容错以及分布式处理两个环节在技术实现层面都存在较为明显的不足。与此对应,Versant 对象数据库本身由于是下一代数据库,因此在上述各方面有较为明显的优势。本案例就以SNS 网络应用中,...

    三维地震资料拼接处理技术在山西赵庄矿区的应用

    在赵庄矿区不同时期采集的两块三维地震资料连片处理中,针对资料存在着采集方向不同(面元方向不同)、地震子波存在差异、地质构造相对复杂、偏移成像效果差等问题,采用了统一划分面元,块间地震子波匹配滤波,地表一致性...

    SQL SERVER 2000开发与管理应用实例

    14.3.5 在两个SQL Server数据库之间复制对象 451 第 15 章 SQL Server应用疑难解答 455 15.1 访问SQL Server实例的常见问题 455 15.1.1 连接失败 455 15.1.2 用户登录失败 458 15.1.3 测试连接到SQL...

    论文研究 - 热处理TC21钛合金的疲劳性能

    将两个热处理周期应用于原样的TC21 Ti合金。 第一个周期称为单阶段热处理(SSHT)。 另一个循环称为双工阶段热处理(DSHT)。 SSHT和DSHT的典型微观结构包括初级等轴α相,残余β相和次级α相(αs)。 由于使用...

    厚度计AGC应用中存在的问题及对策 (2009年)

    现场应用情况表明,厚度计AGC存在两个重要问题 :轧辊偏心导致厚度计AGC产生错误的辊缝调节量,与监控 AGC同时使用时存在相互干扰。结合厚度计AGC的原理和实际应用情况,对存在的问题进行了详细分析。针对轧辊偏心问题...

    中介真值程度的度量及应用2

    针对反对对立强调两个概念之间存在“ 最大的差 异” , 提出弱化“ 两极” , 突出“ 过渡” 的观点.在对过渡与对立进行了一般性讨论后, 建立了标准数值化映射和广义数 值化映射概念, 构造性地证明了过渡情形能转换为...

    Spring Cloud Data Flow流式和批式数据处理框架Local模式运行.docx

    Streaming是长时间一直存在的,你数据来了我就处理,没来我就等着,基于消息驱动。Batch是处理时间较短的,启动一次处理一次,处理完就退出任务,需要去触发任务。 一般地,我们会基于Spring Cloud Stream框架来开发...

    数值优化之非负矩阵分解应用(附可运行matlab代码和较好的可视化)

    1 非负矩阵分解(NMF或NNMF),也是非负矩阵逼近是多元分析和线性代数中的一组算法,其中矩阵V被分解为(通常)两个矩阵W和H ,具有所有三个矩阵都没有负元素的性质。这种非负性使生成的矩阵更容易检查。此外,在...

    云计算环境下的大规模图数据处理技术

    管理与图数据处理机制两个方面,综述了云计算环境下进行大规模图数据处理的关键问题,包括图数据的存储方 式、图索引结构、图分割策略、图计算模型、消息通信机制、容错管理、可伸缩性、图查询处理等.全面总结了...

    计算机应用专业发展规划调研报告.doc

    二、计算机应用专业岗位群及技能要求 由于计算机应用人才中数字媒体艺术和网络技术的人才需求比重较重,所以我们重点 调查了以上两个版块的岗位及技能要求情况 (一)计算机数字媒体艺术人才需求情况分析: 1、...

    支持向量机算法的研究及其应用

    本文仔细研究了支持向量机理论,并针对目前一些支持向量机算法存在的缺陷,分析了产生的原因,提出了两种新的支持向量机算法。针对支持向量机算法难以处理大规模数据的问题,提出了两种新的支持向量机分类方法。并就...

    从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员)

    从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员),有两个内容你必须去弄清楚。第一个内容是如何成为一个Oracle Applications DBA(Oracle应用程序...

    论文研究-企业投入产出模型中可替代产品的处理方法.pdf

    本文所讨论的是由于违反两个基本假定而影响企业投入产出模型应用的问题之一-可替代产品的处理方法问题。文章首先简单列举了企业中普遍存在的可替代产品的主要特点及其...

    膜技术在煤化工高盐废水处理中的应用与发展前景-论文

    从煤化工高盐废水的来源与成分、处理技术及其面临的问题两个方面简单介绍我国煤化工高盐废水处理现状,并从正渗透膜技术、反渗透膜技术、膜蒸馏技术、渗透汽化膜技术等方面梳理了国内外膜技术在高盐废水处理方面的...

    Hadoop海量网络数据处理平台的关键技术

    同时,本文基于Mahout技术实现了这两个分类算法在MapReduce框架上的海量数据流的分类计算,极大地提高了异常流量检测的效率。最后通过实验证明,基于分类器联合的分布式异常流量检测算法可以快速有效地对海量网络数据流...

    net学习笔记及其他代码应用

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...

    东财《计算机应用基础》综合作业.docx

    B:Windows and client表示检索结果必需同时满足windows和client两个条件 东财《计算机应用基础》综合作业全文共7页,当前为第3页。 C:windows client表示检索结果中含有windows或client D:Windows not client表示...

    API之网络函数---整理网络函数及功能

    CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 CreateFileMapping 创建一个新的文件映射对象 ...

Global site tag (gtag.js) - Google Analytics