1

初めてアプリケーションの実行を検出しようとしています。これには Broadcast Receiver を使用しました。ACTION_PACKAGE_REPLACED で問題なく動作します。しかし、ACTION_PACKAGE_FIRST_LAUNCH インテントを使用すると機能しません。私はAndroid 4.3を使用しています

これは私のアクティビティです

public class MainActivity extends Activity {

BroadcastReceiver broadcastReceiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    broadcastReceiver = new TestBroadcast();
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(broadcastReceiver);
}

@Override
protected void onResume() {
    super.onResume();
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_PACKAGE_FIRST_LAUNCH);
    intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
    intentFilter.addDataScheme("package");
    registerReceiver(broadcastReceiver, intentFilter);
}
}

これは私の AndroidManifest.xml です

<receiver android:name="com.example.TestBroadcast" >
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_FIRST_LAUNCH" />
            <action android:name="android.intent.action.PACKAGE_REPLACED" />
            <data android:scheme="package" />
        </intent-filter>
    </receiver>

そして TestBroadcast クラス

public class TestBroadcast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_PACKAGE_FIRST_LAUNCH)) {
        Toast.makeText(context, "Application installed",
                Toast.LENGTH_SHORT).show();
    }
}
}
4

1 に答える 1