Я хочу написать сервис, который будет запускаться при установке нового приложения. Прежде всего, я думаю, что мне нужен приемник вещания. Приемник вещания не работает, когда приложение закрыто. Я пробую Android 7.0 и 8.1
Что я делаю не так?
Я пробовал это решение: Android Broadcast Receiver не работает в фоновом режиме
И это решение: Android Приложение BroadcastReceiver не d ie, когда приложение закрыто
compileSdkVersion 28
minSdkVersion 16
targetSdkVersion 28
Мой BroadcastReceiver
public class IsPackageAdded extends BroadcastReceiver {
public static boolean isAdded = false;
public static boolean isRemoved = false;
Context context;
private static final String TAG = "IsPackageAdded";
@Override
public void onReceive(Context paramContext, Intent paramIntent) {
this.context = paramContext;
if (paramIntent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
isRemoved = true;
String packageName = paramIntent.getData().getSchemeSpecificPart();
Log.d(TAG,"Successfully uninstalled: " + packageName);
Toast.makeText(context, "Successfully uninstalled: "+packageName, Toast.LENGTH_LONG).show();
}
while (!paramIntent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
return;
}
String packageName = paramIntent.getData().getSchemeSpecificPart();
Log.d(TAG,"Successfully installed: " + packageName);
Toast.makeText(context, "Successfully installed: "+packageName, Toast.LENGTH_LONG).show();
isAdded = true;
}
}
Мой манифест
<application>
...
<receiver
android:name="com.sdatam.catcher.classes.IsPackageAdded"
android:enabled="true"
android:exported="true"
>
<intent-filter android:priority="1000">
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
...
</application>
В другой статье говорится, что я должен добавить эту строку в манифест:
android:permission="android.permission.BROADCAST_PACKAGE_ADDED"