アプリのフリーズは技術的にどのように機能しますか?


22

Link2SDやTitanium Backupなどのアプリは、他のアプリを「フリーズ」できます。つまり、削除せずに無効にします。これらのアプリはこれを達成するために何をしますか?

回答:


28

Titanium Backupなどは、内蔵Package Manager (pm)を使用してアプリをフリーズします。pmアプリの実行を防ぎ、ランチャーに表示されないようにする機能があります。Titanium Backupなどを使用するには、次のコマンドを実行します。

pm disable {package_name}

専用のフリーザーアプリを使用せずに、自分でアプリをフリーズできます。ターミナルエミュレータまたはで上記のコマンドを使用するだけADB Shellです。

たとえば、コマンドを使用してフリーズする場合はStock Web Browser、開いTerminal Emulatorてルートに切り替えsuます。次に、を実行し# pm disable com.android.browserます。
戻り#Package com.android.browser new state: disabledます。できた!
ランチャーを再起動して(デバイスによっては再起動が必要な場合があります)、アプリのアイコンが消えていることを確認します。

アプリを解凍するには、単に置き換えるdisableenable、コマンドで。


これは、ここで説明したkill -STOP、kill -CONTコマンドと同じですか?linuxpoison.blogspot.com/2007/11/...
NoBugs

@NoBugsデバイスを再起動します。一部のデバイスでは、アプリを完全に無効にするためにこれが必要です。そして、はい、これはkillコマンドではありません。
Android Quesito

右。pm disable「killed」としか表示されない場合があり、その後すぐにプロセスが再起動します。kill -STOP pidの方が優れています。ps出力では、停止しているものを確認できます。
-NoBugs

13

私はどのようにpm disable機能するかを見つけました:

を実行するとcat /system/bin/pm、次の結果が得られます。

# Script to start "pm" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/pm.jar
exec app_process $base/bin com.android.commands.pm.Pm "$@"

したがって、明らかにJavaから使用するPackageManagerと同じであり、それを呼び出しています-ユーザーアプリが直接アクセスできないルートコンテキストでのみ。

を使用して、何かが凍結しているかどうかを確認できます

getPackageManager().getApplicationEnabledSetting( the package name ) ==
        getPackageManager().COMPONENT_ENABLED_STATE_DISABLED)

-4

Unixシステムでは、ファイルには読み取り、書き込み、実行の3つの権限があります。

(3つのカテゴリの人々:ファイルの所有者(通常は作成者)、人々のグループ、およびその他すべての人ですが、それは対象外です)。

ファイルの実行許可を削除すると、ファイルを起動(実行)できなくなります。


こんにちは、dralpuop。Androidアプリはバイナリではないため、実行可能権限を追加または削除しても実行に影響はありません。
消防士

AndroidはSystem 5 Unixであり、(たとえば)シェルスクリプトはバイナリではありませんが、実行可能権限を追加または削除すると違いが生じます。
dralpuop

シェルスクリプトは、実行可能ビットを設定せずにインタープリターに直接引数として渡すことで実行できるため、シェルスクリプトやアプリには違いはありません。質問と質問は、シェルスクリプトではなく、Androidアプリについてです。
消防士

1
このソースを試して、Androidでのアプリの実行方法を確認してください。github.com/dogriffiths/HeadFirstAndroid/wiki/...
Firelord
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.