任意のアプリケーションを可能にする。しかし、私の問題ではなく、任意のない私は自分のパッケージ名を有効にしたいということで、他のアプリケーションパッケージ名。アンドロイドPackageManagerは、私たちが持っているすべてのアプリケーションを手動で</p> <p>をインストールすることができることを有効にしたアプリケーションを開発している
ここに私が使用したコードがあります。
ここtry {
PackageManager pm1 = getPackageManager();
pm1.setComponentEnabledSetting(new ComponentName("com.service",
"com.service.EnableActivity"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP
);
} catch (SecurityException e) {
e.printStackTrace();
}
「com.serviceは、」私は、インストールパッケージの名前で、「com.service.EnableActivityは、」私の最初のアプリlauncherActivityです。
ログイン
java.lang.SecurityException: Permission Denial: attempt to change component state from pid=3354, uid=10056, package uid=10058 at
android.os.Parcel.readException(Parcel.java:1322) at
android.os.Parcel.readException(Parcel.java:1276) at
android.content.pm.IPackageManager$Stub$Proxy.setComponentEnabledSettingIPackageManager.java:2217)
しかし、私は同じアプリケーションのパッケージ名とクラス名を使用する場合、それは正常に動作しています。これは「signatureOrSystem」である(そしてそれはシステム内で宣言されている)ので、それが唯一のシステムで署名されているアプリケーションで使用できることを
<!-- Allows an application to change whether an application component (other than its own) is
enabled or not. -->
<permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"
android:label="@string/permlab_changeComponentState"
android:description="@string/permdesc_changeComponentState"
android:protectionLevel="signatureOrSystem" />
注:私は、以下を参照してくださいプラットフォームを見てみると
"これは" signatureOrSystem "なので、システム署名で署名されたアプリでのみ使用できます。"本当ですか?あなたが掲示したリンクを読む –
システムで宣言されているので、この特定の権限はシステムまたはシステムキーで署名されたパッケージでのみ利用可能であるため、答えを更新しました。 – satur9nine
True - それを追加するとエラーになります.-まあ、質問に答えることはできません.--あなたがベンダーでなければならないなら、それは何ですか? _他のapps_コンポーネント有効状態のいずれかを変更する方法はありませんか? –