android,安装和卸载软件

安装程序的方法:
 
1、  通过Intent机制,调出系统安装应用,重新安装应用的话,会保留原应用的数据。
 
String fileName = Environment.getExternalStorageDirectory() + apkName;
Uri uri = Uri.fromFile(new File(fileName));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri, application/vnd.android.package-archive");
startActivity(intent);
 
2、  直接调用安装接口。
 
Uri mPackageURI = Uri.fromFile(new File(Environment.getExternalStorageDirectory() + apkName));
int installFlags = 0;
PackageManager pm = getPackageManager();
try
{
    PackageInfo pi = pm.getPackageInfo(packageName,
    PackageManager.GET_UNINSTALLED_PACKAGES);
    if(pi != null)
    {
        installFlags |= PackageManager.REPLACE_EXISTING_PACKAGE;
    }
}
catch (NameNotFoundException e)
{}
PackageInstallObserver observer = new PackageInstallObserver();
pm.installPackage(mPackageURI, observer, installFlags);
 
安装应用权限:android.permission.INSTALL_PACKAGES
 
系统应用(安装在/system/app下面)可以采用该方式,第三方应用无法申请安装卸载权限。
java.lang.SecurityException: Neither user 10039 nor current process has android.permission.INSTALL_PACKAGES.
 
3、  执行install命令。
 
install –r 更新安装,默认新安装;如果不附上-r参数,则会清楚原应用的数据,版本一致则无法安装。
(1)am start …
(2)Runtime.exec(String[] args)
(3)Class<?> execClass = Class.forName("android.os.Exec");
 
4、  执行cp / adb push命令。
 
由系统检测到应用程序有更新,自动完成重新安装。
 
5、  通过第三方软件实现。
 
Market,EOE,eTrackDog均采用第一种方法实现更新。
优点:由系统核心应用程序控制安装程序;
缺点:无法控制安装过程;安装完成后,也无法立刻启动应用,需要用户确认;无法扩展。
 
实例:Market查找安装程序
Intent intent =
new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:your.app.id"));
startActivity(intent);
 
卸载程序的方法:
 
1、  通过Intent机制,调出系统卸载应用。
Uri packageURI = Uri.parse("package: your.app.id");
Intent intent = new Intent(Intent.ACTION_DELETE);
startActivity(intent);
 
2、  直接调用卸载接口。
 
PackageInstallObserver observer = new PackageInstallObserver();
pm.installPackage(mPackageURI, observer, installFlags);
 
卸载应用权限:android.permission.DELETE_PACKAGES
 
3、  运行rm apk安装文件,由系统检测后调用卸载应用。

框计算中的需求分析概述

框计算的目标是为用户提供基于搜索框的一站式搜索服务。举例来说,当用户在搜索框中输入“非诚勿扰”时,系统就能明确该query有寻求电视节目视频、电影视频、查找影评、参与讨论及查看相关新闻等需求,然后将这些不同的需求分配给最优的内容资源或应用进行处理,最终精准高效地将满足这些需求的结果展现给用户。图1展示了“框”对query“非诚勿扰”的满足情况。从上面的分析中,我们不难看出,框计算的第一步,就是识别出一个query具有哪些需求,而这正是需求分析要完成的任务。

图1 “非诚勿扰”的框计算结果

需求分析是框计算的入口,因为只有分析出query的需求,才能更好地展现出相应的结果来满足用户的需求。因此对query的需求分析得越准确、覆盖的query准多,用户的满意度则越大。需求分析是框计算中最重要也是难度最大的地方之一。

识别query的需求,最容易想到的方法是查词表。比如将所有的电影、电视剧名都事先收集起来,放到词表中,只要用户输入该词表中的词,就能识别出一个query是否有寻找视频的需求。这种方法的优点是快,但缺点非常明显:首先,这种方法只能将query划分为2个维度,要么有视频需求,要么没有视频需求。但很多视频的名字,具有多方面的含义,在视频上面只是其中一个微弱的含义,如果直接出视频需求,则会极大地伤害用户。比如,有一个广告片的名字叫“百度一下”,这个广告片可能60%以上的用户都不熟悉,如果这60%以上的用户输入“百度一下”,直接给出一个名为“百度一下”的视频观看结果,则这60%以上的用户会感觉非常困惑。其次,这种方法不能很好地满足大部分用户的需求。用户在寻找视频时,表述方法是多种多样的,比如:士兵突击全集、士兵突击 高清、士兵突击全集在线观看等,这3个query都具有强烈的寻找视频需求,但通过查表的方法,却无法识别出该需求。再次,这种方法对电影、电视剧外的视频需求无法满足。有视频需求的往往不止电影、电视剧,流行或新闻时效性的很多东西,都具有强烈的视频需求。比如:西单女孩、中关村男孩、钓鱼岛撞船、朝韩炮击等,多数用户往往都有查看相关视频的需求。最后,这种方法缺乏预测性,识别出的query数量有限。即对于词表中的词条,能够识别出视频需求,但词表外词条,无法识别出视频需求。因此,如果词表的规模为N,则最多只能识别出N个query具有视频需求。

从上面的分析中,我们可以总结出,一个好的需求分析方法,至少要满足如下需求:1)具有很高的准确率以及召回率,即能在识别出90%以上query需求的同时,又能保证识别出来的需求,95%以上都是正确无误的;2)具有良好的预测能力,即能够准确地预测出未知query的需求;3)具有识别需求与解析字段功能,即在识别出query需求的同时,还能高效地从中解析出所需信息。

下面是几个典型的例子。通过这些例子,大家就能对需求分析要完成的任务有一些大体的了解了。

在图2中,需求分析需要完成的任务就是解析出query具有汇率转换的需求,并解析出数额56.7,以及源货币为美元,目标货币为人民币。

图2 直接展现汇率结果

在图3中,需求分析需要识别出该query具有查找火车时刻表的需求,并解析出起点站为北京,终点站为上海。进而直接为用户展现出从北京到上海的火车时刻表,极大地方便了用户获取相关信息。

图3 直接展现火车车次相关信息

图4、图5分别展示了需求分析如何通过识别出query具有查找生僻字以及单位换算的需求,并直接给出答案的过程。这个过程对用户而言是不可见的,但是对系统而言,却需要进行一系列复杂的识别、解析与展现。

图4 满足生僻字查询需求

图5 满足单位换算需求

图6显示了需求分析识别出了用户的query具有寻求招聘职位信息的需求,并解析出公司名,职位2个字段,而后系统直接从相关数据源中检索出所需职位展示给用户的示例。

图6 满足用户搜索招聘职位需求

从上述分析与示例中可以知道,query需求分析的目标是识别出query的意图或感兴趣的领域,并从中抽取出所需字段。要完成这项任务,是一件非常有挑战性的工作。首先,用户query表述方式的多样性给需求分析带来了不少困难。比如,关于寻找天气这一种需求,用户就有上百种不同的表达方式。其次,相近query可能具有截然不同的需求。比如:“从北京到上海车距”与“从北京到上海车票”,前者具有较强的自驾需求,而后者具有较强的火车时刻查询需求。而同样为明星,王菲、张学友,都具有强烈的视频、图片等需求,而李开复、张亚勤等科技明星,从用户的需求来看,最强烈的需求是寻找百科信息,而非视频、图片。最后,用户输入的query往往使用自然语言进行表述,有时还包含缩略与拼写错误,比如:5新加坡元=?美元、5人名币等于多少美元等。这些客观存在的问题,都加大了需求分析的难度。

为更好地满足用户各式各样的需求,强大的需求分析是必须具有的。百度框计算的需求分析,是通过对query的语义分析,结合用户行为分析以及海量计算技术实现的。通过各种手段评估,目前已经达到了很好的效果。举例来说,通过对一天几百亿次用户检索query的分析,使用机器学习的方法,我们就能自动从中学习出用户的各种惯用或冷僻的表述方式,再结合语义分析、信息抽取等技术,就能准确高效地实时识别出query的需求并解析出所需信息,为广大网民提供最便捷的搜索服务以及搜索体验。

文章来源:百度搜索研发部官方博客 转载请注明出处链接。