搜索
 找回密码
 立即注册

简单一步 , 微信登陆

appsetting

作者:liuwei | 时间:2016-7-7 12:10:50 | 阅读:3540| 只看该作者
是否允许安装非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 {
        }
    }



收藏
收藏0
分享
分享
点赞
点赞0
反对
反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版