在Android安装卸载程序的源码中我们知道:
- < 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>
- < 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>
- < 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>
- < 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>
因为根据里面的权限我们可以 从sd卡安装一个程序:
- String fileName = Environment.getExternalStorageDirectory() + "/myApp.apk";
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setDataAndType(Uri.parse("file://" + filePath),"application/vnd.android.package-archive");
- //或者
- //intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
- startActivity(intent);
- String fileName = Environment.getExternalStorageDirectory() + "/myApp.apk";
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setDataAndType(Uri.parse("file://" + filePath),"application/vnd.android.package-archive");
- //或者
- //intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
- startActivity(intent);
Android安装卸载程序的操作中要想卸载一个程序;
- Uri packageURI = Uri.parse("package:com.android.myapp");
- Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
- startActivity(uninstallIntent);
- Uri packageURI = Uri.parse("package:com.android.myapp");
- Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
- startActivity(uninstallIntent);
默认是不支持安装非市场程序的 因此判断一下
-
- int result = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 0);
- if (result == 0) {
- // show some dialog here
- // ...
- // and may be show application settings dialog manually
- Intent intent = new Intent();
- intent.setAction(Settings.ACTION_APPLICATION_SETTINGS);
- startActivity(intent);
- }
注意:package:com.demo.CanavaCancel 这个形式是 package:程序完整的路径 (包名+程序名).
关于卸载时传入包名为 要卸载apk的内部的包名