設定のアプリ一覧からプリインストールの無効化ができます。
ただし、すべてのプリインストールが無効にできるわけではありません。
以下のソースを確認。
packages\apps\Settings\src\com\android\settings\applications
- InstalledAppDetails.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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); List<resolveinfo> homes = 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 ); } } </resolveinfo> |
以下のプリインストールアプリは無効化できません。
- マーケットからUpdateを行った
- Intent.CATEGORY_HOMEのActivityを持っている (= Launcher Application)
- System と同じSignature を持っている ( = System Application)
Disableを選択すると、PackegeManager#setApplicationEnabledSetting()がよばれ無効化されます。
無効化されたアプリは、アプリ一覧に表示されなくなります。
0 件のコメント:
コメントを投稿