Опитвам се да активирам и деактивирам приемник за излъчване, като използвам този метод на PackageManager:
setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Приемникът на излъчване е регистриран в манифеста. Приемникът работи добре, но когато се опитам да го деактивирам, той все още получава излъчваните съобщения. Когато деактивирам приемника в манифеста чрез "android:enabled="false"", приемникът не получава нищо, но не мога да го активирам.
Извиквам метода от вътрешна услуга.
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName("com.app",
".broadcast_receivers.OnNetworkChangedReceiver");
pm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Манифест на Android:
<receiver android:name=".broadcast_receivers.OnNetworkChangedReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
Приемникът
public class OnNetworkChangedReceiver extends BroadcastReceiver {
private static final String TAG = "OnNetworkChangedReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "in OnNetworkChanged");
}
}
Вчера извиках метода и от дейността. Мислех, че работи, но днес вече нищо не работи. Възможно ли е понякога да има голямо забавяне в намерението (android.net.conn.CONNECTIVITY_CHANGE), което погрешно изтълкувах вчера като деактивиране на приемника?
Правилната посока ли е подходът с PackageManager или има основна грешка в идеята?
Благодаря много, Свен
0
вместоPackageManager.DONT_KILL_APP
също може да ви помогне да се отървете от дейността, ако чета документите правилно: developer.android.com/reference/android/content/pm/ в разделаSetComponentEnabledSetting
. - person Ehtesh Choudhury   schedule 07.05.2013