9

AppLock アプリケーションが行っているようなことを実装したいと考えています。
設定でアプリケーションのアンインストール/インストールをロックするように設定されている場合、アプリのアンインストール中に (正確には [アンインストール] ボタンをクリックすると)、パスワード/パターンを要求するロック画面が表示されます。
パスワードを入力した後にのみ、ユーザーはアプリをアンインストールできます。

アンインストールボタンがクリックされたときに得られるその意図(または何か、意図であると思いますが、確かではありません)は何ですか?

また、私が言及したアプリはデバイス管理者である必要があるため、デバイス管理者にしたくありません。
彼らがそれを行うことができれば、何らかの方法があります。助けてください。

4

6 に答える 6

2

私は方法を見つけました。

  1. [設定] -> [アプリの管理] - > [任意のアプリ] をクリックします。
    エクストラでパッケージの名前を含むブロードキャストを取得します。

  2. その画面の [アンインストール] ボタンをクリックすると、アクティビティは常に name で開かれますcom.android.uninstaller.UnistallerActivity

したがって、この問題の解決策は、上記の 1 と 2 の手順を組み合わせた方法です。

最初のステップで述べたインテントを取得し、エクストラにアプリのパッケージ名が含まれている場合は、アクティビティ ウォッ​​チャーを開始して、PackageManager最も目に見えるアクティビティとそのパッケージを取得します。
したがって、アンインストーラー アクティビティが開始された場合、ユーザーがアプリのアンインストールを望んでいることを確認できます。

その後、彼がそれをするのを止めるために必要な行動をとることができます.

于 2013-03-25T04:52:17.710 に答える
0

ブロードキャスト レシーバーで以下の意図をキャッチして、アクティビティ警告アクティビティを起動するか、続行したい処理を実行してみてください。

「android.intent.action.UNINSTALL_PACKAGE」

このインテントは、アンインストールされようとしている同じアプリに提供またはブロードキャストされません

于 2013-03-18T10:58:30.580 に答える
0

これは多くの変更を経たようです。のデフォルトのブロードキャストがPACKAGE_REMOVED意図したとおりに機能しません。私はこの議論に出くわしましたが、実際には実装しませんでしたが、人々はそれがうまくいったと言います. これを試してみてください

https://groups.google.com/forum/?fromgroups=#!topic/android-developers/aX5-fMbdPR8

于 2013-03-18T16:46:23.283 に答える
0

代わりにデバイス管理者にします。これにより、ユーザーによるアンインストールが自動的にブロックされます。ユーザーがそれをアンインストールするために [セキュリティ] > [デバイス管理者] リストから非アクティブ化しようとすると、アプリはパスワードを要求できます。

于 2013-03-15T12:06:40.400 に答える
0

アプリケーションのアンインストールの意図を傍受できます。次のコードをマニフェスト ファイルに追加するだけです。

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".UninstallActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.DELETE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="package" android:pathPattern="com.package.yourapp" />
        </intent-filter>            
    </activity>
</application>

この後、何らかの方法でアプリケーションが削除されることを処理し、パッケージ マネージャーのアンインストーラーを呼び出すことができます。

于 2013-03-15T12:08:32.203 に答える