SuperIC社区_
标题: appsetting [打印本页]
作者: liuwei 时间: 2016-7-7 12:10
标题: appsetting
是否允许安装非Appstore应用
privatevoidsetNonMarketAppsAllowed(boolean enabled) {
// Change the system setting
android.provider.Settings.Secure.putInt(getContentResolver(),
android.provider.Settings.Secure.INSTALL_NON_MARKET_APPS, enabled ? 1 : 0);
}
、
获取首选安装位置type=0 由系统确定 type=1设备内部存取 type=3 可卸载sd卡
privateint getInitInstallType() {
return android.provider.Settings.Secure.getInt(getContentResolver(),
INSTALL_APP_LOCATION, 0); }
设置
private void setInstallType(int type) {
Settings.Secure.putInt(getContentResolver(), INSTALL_APP_LOCATION, type);
Settings.Global.putInt(getContentResolver(), Settings.Global.DEFAULT_INSTALL_LOCATION, type);
} 设置安装位置
获取所有应用及sd卡应用信息
private List<ApplicationInformation> mSdcardlistAppInfo = new ArrayList<ApplicationInformation>();
private List<ApplicationInformation> mTempSdcardAppInfoList = new ArrayList<ApplicationInformation>();
List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
PackageInfo packageInfo;
mTempAppInfoList.clear();
mTempSdcardAppInfoList.clear();
int size = packages.size();
for (int i = 0; i < size; i++) {
packageInfo = packages.get(i);
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
mSdcardAppInfo = getInfoOfApps(packageInfo);
mTempSdcardAppInfoList.add(mSdcardAppInfo); // mTempSdcardAppInfoList sd卡apk信息
} else {
mAppInfo = getInfoOfApps(packageInfo);
mTempAppInfoList.add(mAppInfo);
}
}
}
if (mTempSdcardAppInfoList.size() != 0) {
mTempAppInfoList.addAll(mTempSdcardAppInfoList); // mTempAppInfoList所有apk信息
}
private ApplicationInformation mSdcardAppInfo;
mAppInfo.getAppName(); //apk名字
mAppInfo.getVersionName(); //版本号
formateFileSize(mAppInfo.getTotalSize()); //总计大小
formateFileSize(mAppInfo.getAppSize()); //应用程序大小
formateFileSize(mAppInfo.getDataSize()); //数据大小
formateFileSize(mAppInfo.getCacheSize()));// 缓存大小
private String formateFileSize(long size) { 大小转换成字符串
if (size > 0) {
return Formatter.formatFileSize(AppDetailInfoActivity.this, size);
} else {
return"0KB";
}
}
强制停止
privatevoidforceStopPackage(String pkgName) {
mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
mActivityManager.forceStopPackage(pkgName);
checkForceStop();
}
/**
* check current application whether stopping.
*/
privatevoid checkForceStop() {
Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART, Uri.fromParts("package",
packageName, null));
intent.putExtra(Intent.EXTRA_PACKAGES, new String[] {
packageName
});
intent.putExtra(Intent.EXTRA_UID, mAppInfo.getUid());
intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mAppInfo.getUid()));
sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null,
Activity.RESULT_CANCELED, null, null);
}卸载apk
privatevoid uninstallPkg(String pkgName) {
PackageDeleteObserver observer = newPackageDeleteObserver();
getPackageManager().deletePackage(pkgName, observer, 0);
Log.d(TAG, "uninstallPkg");
}
classPackageDeleteObserverextends IPackageDeleteObserver.Stub {
publicvoid packageDeleted(String packageName, int returnCode) throws RemoteException {
//执行完删除会调用这个函数,里面内容可以随便改写, returnCode packageName 都是返回参数
//returnCode == PackageManeger.SUCCEEDED 表示卸载成功
}
}
清楚数据
privatevoid initiateClearUserData() {
// Invoke uninstall or clear user data based on sysPackage
if (mClearDataObserver == null) {
mClearDataObserver = newClearUserDataObserver();
}
if (mActivityManager == null) {
mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
}
boolean res = mActivityManager.clearApplicationUserData(packageName, mClearDataObserver);
if (!res) {
// Clearing data failed for some obscure reason.
Log.d(TAG, "Couldnt clear application user data for package, " + packageName);
}
}
class ClearUserDataObserver extends IPackageDataObserver.Stub {
publicvoid onRemoveCompleted(final String packageName, finalboolean succeeded) {
}
}
移动apk
Private void movepakege(){
if (mPackageMoveObserver == null) {
mPackageMoveObserver = new PackageMoveObserver();
}
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
mMoveFlag = true;
if (mPackageManager != null) {
mPackageManager.movePackage(mAppInfo.getPackageName(),
mPackageMoveObserver, mMoveFlags);
}
} else {
}
}
classPackageMoveObserverextendsIPackageMoveObserver.Stub {
@Override
publicvoidpackageMoved(String packageName, int returnCode) throws RemoteException {
}
}
欢迎光临 SuperIC社区_ (/) |
Powered by Discuz! X3.3 |