4

編集:なんとか解決しました。新しいプロジェクトを作成し、アプリのデータを消去してからアンインストールし、再インストールすると、魔法のように機能しました。助けてくれてありがとう。

アプリがいつインストールされたかを検出しようとしていますが、どこが間違っているのかよくわかりません。ここでいくつかの質問を確認しましたが、理解できないようです。私はアンドロイドにかなり慣れていないので、明らかなことを見落としている可能性があります。ここに私が持っているもののテストケースがあります。

携帯電話にインストールしたところ、プロセスとサービスが設定で実行中として表示されました。次に、Play ストアからアプリをダウンロードし、logcat を確認しましたが、アプリからは何もありません。

私が間違っている場所について何か助けはありますか?ありがとう。

編集:

もう少し遊んだ後、いくつかの新しいサンプル テスト コードができました。新しいパッケージがインストールされると、onReceive メソッドは起動しません。ただし、いろいろとテストしていたので、BroadcastReceiver クラスにコンストラクターを追加しました。コンストラクターは、パッケージがインストールされるたびに起動します。そのため、意図を受け取っているようですが、onReceive 内のログは出力されないようです。何か案は?

public class InstallReceiver extends BroadcastReceiver {

    public InstallReceiver()
    {
        //This log will display in the logcat
        Log.d("InstallReceiver", "InstallReceiver constructor called.");
    }
    @Override
    public void onReceive(Context context, Intent intent) {
        //This log never displays if the constructor is in or commented out
        Log.d("InstallReceiver", "Install detected.");
    }

}

<receiver android:name=".InstallReceiver">
            <intent-filter >
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.PACKAGE_ADDED"  />
            <action android:name="android.intent.action.PACKAGE_CHANGED" />
            <action android:name="android.intent.action.PACKAGE_INSTALL" />
            <action android:name="android.intent.action.PACKAGE_REMOVED" />
            <action android:name="android.intent.action.PACKAGE_REPLACED" />
            <data android:scheme="package" />
            </intent-filter>
        </receiver>
4

4 に答える 4

0

ドキュメントには、「ブロードキャスト アクション: 新しいアプリケーション パッケージがデバイスにインストールされました。データにはパッケージの名前が含まれています。新しくインストールされたパッケージはこのブロードキャストを受信しないことに注意してください。

于 2015-08-28T08:49:50.020 に答える