`

android第三方应用apk安装和运行控制解决方案[转]

阅读更多

需求:
   要求让用户选择喜欢的第三方应用 下载 并通过自己的UI运行 

关键问题:
   (1)  可交互下载, 用户可取消,显示进度.................这个问题好解决 ,有很多方式,如果不会可以联系我
   (2)  安装apk
   (3)  运行安装过的应用   ...... 怎样定位应用的Activity并激活 ( 如果是自己的activity 就好办了 )


解决方案
   (1) 安装apk

    直接贴出代码 就明白
   Intent intent = new Intent(Intent.ACTION_VIEW); 
   intent.setDataAndType(Uri.fromFile(new File("/sdcard/1.apk")), "app lication/vnd.android.package-archive"); 
   startActivity(intent); 
    
   其中/sdcard/1.apk 就是要安装的apk,上面代码实际上是请求android的管理安装的activity
   如果要强制安装过程,目前我还没有找到解决方法

   (2)运行应用

   首先android有一个PackageManager,这玩意功能 很强大,功能就和它的意思一样
   
   假设:如果我们知道一个第三方Application的包的名称和Activity的名称,是否可以启动它的,答案当让市YES
   
   启动代码:
   PackageManager pm;  
   //初始化pm, 比如在activity里可以PackageManager pm = getPackageManager(); 

   PackageInfo pi = pm.getPackageInfo("包的名称", PackageManager.GET_ACTIVITIES);
   //PackageInfo  包含丰富的包的信息,这个'包的名称'是什么,在AndroidManifest.xml中有明确定义 
   //  比如 package="xxx.yyy.Portal.UI"

   ActivityInfo ai=pi.activities[0];  // ActivityInfo 同样道理 他是 Activity的信息
   //这里指向第一个包中的Activity, 大多数都是第一个Activity为启动Activity
   if(ai==null) throw new Exception(pkg+"不包含任何Activity");

   String sName=ai.name;  //这里就得到Activity的类名了

   启动它:
   Intent intent = new Intent();
   intent.setComponent(new ComponentName(pkg,sName));
   parent.startActivity(intent);

   (3)获得第三方应用的包名
     
   只要有包名,就可以启动Activity了,但是不知道名字怎么办?
   如果应用没有安装自然启动不了,只要安装了就有办法。

   方法1 :
        MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_INSTALL);
        filter.addAction(Intent.ACTION_PACKAGE_ADDED);
        filter.addDataScheme("package"); 
        registerReceiver(myReceiver, filter);
        
      监视安装,在MyBroadcastReceiver的onReceive函数里
      public void onReceive(Context arg0, Intent intent) {
                        String sPackageName=intent.getDataString();  //这个就是包名
                }
      也可以使用 AndroidManifest.xml配置来监视

   方法2 : 
      枚举所有安装的应用,根据你自己的条件筛选
      使用PackageManager的
      public abstract List<PackageInfo> getInstalledPackages (int flags) 可以获得安装应用的列表。

 

 

 

 

 

apk安装及卸载的原理及代码

this should work: 

Java:
Intent intent = new Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.fromFile(new File(fileName))"application/vnd.android.package-archive")
startActivity(intent);


that's because intent filter is: 
XML:
       <activity android:name=".PackageInstallerActivity"> 
            <intent-filter> 
                <action android:name="android.intent.action.VIEW" /> 
                <category android:name="android.intent.category.DEFAULT" /> 
                <data android:scheme="content" /> 
                <data android:scheme="file" /> 
                <data android:mimeType="application/vnd.android.package-archive" /> 
            </intent-filter> 
        </activity>


intent filter for uninstallation: 
XML:
       <activity android:name=".UninstallerActivity"> 
            <intent-filter> 
                <action android:name="android.intent.action.VIEW" /> 
                <action android:name="android.intent.action.DELETE" /> 
                <category android:name="android.intent.category.DEFAULT" /> 
                <data android:scheme="package" /> 
            </intent-filter> 
        </activity>

分享到:
评论

相关推荐

    Android应用开发中使用第三方字体

    在Android应用开发中,为了实现更具个性化或者符合品牌特色的用户界面,我们经常需要引入第三方字体。这个Demo就是针对这一需求,展示了如何在Android项目中集成和使用非系统默认的字体。接下来,我们将深入探讨...

    APK安装器.zip

    对于非谷歌Play商店来源的APK(比如第三方应用市场或直接从开发者网站下载),安装前可能需要在设备设置中开启“未知来源”的安装权限,以确保安全。 在Android安全机制中,每个APK文件都需要进行签名,以验证其...

    安卓APK安装器

    这种方式省去了在手机上直接下载或通过第三方应用商店安装的步骤,尤其对于没有Google Play或其他应用商店的地区,或者需要手动安装非市场应用的情况,更为方便。 使用【安卓APK安装器】时,需要注意以下几点: 1. ...

    【Android 安全】Android 应用 APK 加固总结.zip

    除了自行实现加固方案外,还可以使用第三方加固服务,如腾讯的XGuard、360的V盾等,这些服务提供了自动化、一站式的加固解决方案,简化了加固过程,并提供更高级的安全特性。 五、加固的挑战与风险 1. 性能影响:...

    APK安装器电脑版本

    APK是Android应用程序的包文件格式,通常用于在Android设备上分发和安装应用程序。当用户无法通过Google Play商店安装特定应用或需要在无触摸屏环境(如电脑)中运行Android应用时,这种工具就显得尤为实用。 首先...

    TCL安装第三方软件工具包2.zip

    在IT领域,特别是智能电视和家用电器操作系统的定制与扩展中,TCL作为一个知名的电视机品牌,也提供了允许用户安装第三方软件的功能。"TCL安装第三方软件工具包2.zip"是专为TCL智能电视设计的一个实用工具,它包含了...

    android开发 APK签名软件

    针对这种情况,我们可以借助第三方签名软件,如本压缩包中的"APK签名工具(dodo APKSign)",来简化签名过程。 首先,我们要理解APK签名的含义。APK签名是Android系统用于验证应用来源和保持应用完整性的一种机制。每...

    ADB WinApi Android的APK安装

    标题中的“ADB WinApi Android的...总的来说,ADB与WinApi.dll的结合提供了在Windows环境下便捷安装Android应用的解决方案,极大地提高了开发和测试的效率。对于Android开发者和爱好者来说,掌握这种技术是非常有用的。

    shareSDK android第三方qq,微信登录

    在这个"shareSDK android第三方qq,微信登录"的主题中,我们将深入探讨如何使用ShareSDK实现QQ和微信的第三方登录功能。 首先,ShareSDK是MobTech推出的一款社会化组件化服务平台,支持包括QQ、微信在内的众多社交...

    ML Manager Pro v3.5.3 for Android 一款适用于 Android 的可自定义APK提取器应用.rar

    3. **应用共享**:用户可以直接通过应用内分享功能,将APK文件发送给其他用户,无需通过第三方平台。 4. **权限管理**:对安装的应用进行权限查看和控制,帮助用户了解每个应用的权限需求并做出相应调整。 5. **...

    Android apk无法安装及闪退问题解决办法

    如果像描述中提到的那样,集成第三方SDK(例如环信SDK)出现问题,检查SDK的兼容性和版本要求。确保你的项目中使用的SDK版本与你的最低支持的Android版本兼容。在Gradle文件中调整依赖库的版本,或者联系SDK供应商...

    刷机精灵APK安装提取版

    总的来说,刷机精灵APK安装提取版为用户提供了简单易用且无需额外安装的刷机解决方案,对于喜欢探索和个性化设备的Android用户来说,是一个值得尝试的工具。不过,刷机前务必了解相关知识,谨慎操作,以保护好自己的...

    Android-Android应用自动静默更新安装库.

    开发者可以使用Android的`HttpURLConnection`或第三方库如Volley、OkHttp等进行网络请求。需要注意的是,要处理好网络连接的异常情况,以及考虑到网络条件可能不稳定的情况,应采用断点续传或者重试机制。 2. **...

    行业分类-设备装置-一种基于android平台应用安装控制方法及系统.zip

    Android系统的应用安装通常有两种方式:通过Google Play Store或其他第三方应用市场,以及通过手动安装APK文件。为了确保设备安全,系统需要对这两种方式进行有效的控制。可能的方法包括: 1. **权限管理**:...

    智能电视APK局域网安装器

    智能电视APK局域网安装器是一款专为智能电视设计的应用程序,旨在简化用户在电视上安装第三方应用的过程。在传统的安装方式中,用户通常需要通过USB设备将APK文件传输到电视上,或者借助内置的文件管理器来手动安装...

    xamarin/android 导出excel第三方dll文件

    在这种情况下,通常会借助第三方库来实现。本篇将详细讲解如何在Xamarin.Android项目中使用POI库来导出Excel,并涉及到DLL文件的打包和使用。 POI是Apache软件基金会的一个开源项目,它提供了Java API来处理...

    Android应用安全解决方案.docx

    本文将深入探讨Android应用安全解决方案中的关键技术点,包括APK加固、代码混淆以及日志管理等。 #### 一、背景介绍 随着移动互联网的发展,越来越多的政府机构选择开发专属的应用程序来提升公共服务的质量与效率...

    java android人脸识别功能 apk

    除了上述技术,还可以考虑使用第三方库,如dlib、dlib4android等,它们提供了额外的特征检测和匹配功能。 在实际开发过程中,需要注意性能优化,例如利用多线程处理图像,避免阻塞UI线程,以及根据需求选择合适的...

Global site tag (gtag.js) - Google Analytics