編集:なんとか解決しました。新しいプロジェクトを作成し、アプリのデータを消去してからアンインストールし、再インストールすると、魔法のように機能しました。助けてくれてありがとう。
アプリがいつインストールされたかを検出しようとしていますが、どこが間違っているのかよくわかりません。ここでいくつかの質問を確認しましたが、理解できないようです。私はアンドロイドにかなり慣れていないので、明らかなことを見落としている可能性があります。ここに私が持っているもののテストケースがあります。
携帯電話にインストールしたところ、プロセスとサービスが設定で実行中として表示されました。次に、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>