設定のアプリ一覧からプリインストールの無効化ができます。
ただし、すべてのプリインストールが無効にできるわけではありません。
以下のソースを確認。
packages\apps\Settings\src\com\android\settings\applications
- InstalledAppDetails.java
private void initUninstallButtons() { mUpdatedSysApp = (mAppEntry.info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0; boolean enabled = true; if (mUpdatedSysApp) { mUninstallButton.setText(R.string.app_factory_reset); } else { if ((mAppEntry.info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { enabled = false; if (SUPPORT_DISABLE_APPS) { try { // Try to prevent the user from bricking their phone // by not allowing disabling of apps signed with the // system cert and any launcher app in the system. PackageInfo sys = mPm.getPackageInfo("android", PackageManager.GET_SIGNATURES); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setPackage(mAppEntry.info.packageName); Listhomes = mPm.queryIntentActivities(intent, 0); if ((homes != null && homes.size() > 0) || (mPackageInfo != null && mPackageInfo.signatures != null && sys.signatures[0].equals(mPackageInfo.signatures[0]))) { // Disable button for core system applications. mUninstallButton.setText(R.string.disable_text); } else if (mAppEntry.info.enabled) { mUninstallButton.setText(R.string.disable_text); enabled = true; } else { mUninstallButton.setText(R.string.enable_text); enabled = true; } } catch (PackageManager.NameNotFoundException e) { Log.w(TAG, "Unable to get package info", e); } } } else { mUninstallButton.setText(R.string.uninstall_text); } } // If this is a device admin, it can't be uninstall or disabled. // We do this here so the text of the button is still set correctly. if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) { enabled = false; } mUninstallButton.setEnabled(enabled); if (enabled) { // Register listener mUninstallButton.setOnClickListener(this); } }
以下のプリインストールアプリは無効化できません。
- マーケットからUpdateを行った
- Intent.CATEGORY_HOMEのActivityを持っている (= Launcher Application)
- System と同じSignature を持っている ( = System Application)
Disableを選択すると、PackegeManager#setApplicationEnabledSetting()がよばれ無効化されます。
無効化されたアプリは、アプリ一覧に表示されなくなります。
0 件のコメント:
コメントを投稿