• Android安装卸载程序解析[转]


    http://dev.10086.cn/cmdn/wiki/index.php?edition-view-4133-1.html

    在Android安装卸载程序的源码中我们知道:

    Java代码 复制代码
    1. < activity android:name=".PackageInstallerActivity">      
    2. < intent-filter>      
    3. < action android:name="android.intent.action.VIEW" />      
    4. < category android:name="android.intent.category.DEFAULT" />      
    5. < data android:scheme="content" />      
    6. < data android:scheme="file" />      
    7. < data android:mimeType="application/vnd.android.package-archive" />      
    8. < /intent-filter>      
    9. < /activity>     
    10.     
    11. < activity android:name=".UninstallerActivity">      
    12. < intent-filter>      
    13. < action android:name="android.intent.action.VIEW" />      
    14. < action android:name="android.intent.action.DELETE" />      
    15. < category android:name="android.intent.category.DEFAULT" />      
    16. < data android:scheme="package" />      
    17. < /intent-filter>      
    18. < /activity>   
    Java代码 
    1. < activity android:name=".PackageInstallerActivity">     
    2. < intent-filter>     
    3. < action android:name="android.intent.action.VIEW" />     
    4. < category android:name="android.intent.category.DEFAULT" />     
    5. < data android:scheme="content" />     
    6. < data android:scheme="file" />     
    7. < data android:mimeType="application/vnd.android.package-archive" />     
    8. < /intent-filter>     
    9. < /activity>    
    10.    
    11. < activity android:name=".UninstallerActivity">     
    12. < intent-filter>     
    13. < action android:name="android.intent.action.VIEW" />     
    14. < action android:name="android.intent.action.DELETE" />     
    15. < category android:name="android.intent.category.DEFAULT" />     
    16. < data android:scheme="package" />     
    17. < /intent-filter>     
    18. < /activity>   

      

    因为根据里面的权限我们可以 从sd卡安装一个程序:

       

    Java代码 复制代码
    1. String fileName = Environment.getExternalStorageDirectory() + "/myApp.apk";      
    2. Intent intent = new Intent(Intent.ACTION_VIEW);   
    3.   
    4. intent.setDataAndType(Uri.parse("file://" + filePath),"application/vnd.android.package-archive");   
    5. //或者   
    6. //intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");    
    7.   
    8. startActivity(intent);    
    Java代码 
    1. String fileName = Environment.getExternalStorageDirectory() + "/myApp.apk";     
    2. Intent intent = new Intent(Intent.ACTION_VIEW);  
    3.   
    4. intent.setDataAndType(Uri.parse("file://" + filePath),"application/vnd.android.package-archive");  
    5. //或者  
    6. //intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");   
    7.   
    8. startActivity(intent);    

    Android安装卸载程序的操作中要想卸载一个程序;

    Java代码 复制代码
    1. Uri packageURI = Uri.parse("package:com.android.myapp");      
    2. Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);      
    3. startActivity(uninstallIntent);    
    Java代码 
    1. Uri packageURI = Uri.parse("package:com.android.myapp");     
    2. Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);     
    3. startActivity(uninstallIntent);    

      

    默认是不支持安装非市场程序的 因此判断一下

    Java代码 复制代码
      1. int result = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 0);      
      2. if (result == 0) {      
      3. // show some dialog here      
      4. // ...      
      5. // and may be show application settings dialog manually      
      6. Intent intent = new Intent();      
      7. intent.setAction(Settings.ACTION_APPLICATION_SETTINGS);      
      8. startActivity(intent);     
      9. }    

          

        注意:package:com.demo.CanavaCancel 这个形式是 package:程序完整的路径 (包名+程序名).

        关于卸载时传入包名为 要卸载apk的内部的包名

  • 相关阅读:
    vue中引用font-awesome
    创建VUE项目
    Core项目添加EF
    DBHelper,之前常用的代码,保存起来。
    appium+python的APP自动化(2)
    appium+python的APP自动化(1)
    单例模式
    双重检测机制解决缓存穿透问题
    mysql数据库
    java的三大特性----封装、集成、多态
  • 原文地址:https://www.cnblogs.com/afly/p/2491858.html
Copyright © 2020-2023  润新知