http://android.amberfog.com/?p=98
Intent filters for such actions are: <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> so if you want to install your .apk file from SD card – just write something like that: String fileName = Environment. getExternalStorageDirectory() + "/myApp.apk";Intent intent = new Intent (Intent. ACTION_VIEW);intent. setDataAndType(Uri. fromFile(new File(fileName )), "application/vnd.android.package-archive");startActivity (intent );
for uninstallation: Uri packageURI = Uri.parse("package:com.android.myapp"); Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); startActivity(uninstallIntent); be aware that by default INSTALL_NON_MARKET_APPS option is disabled. You may want to check this option and show user friendly dialog before trying to install the app: 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 );}
|