Sto lavorando su un'applicazione open source (droidwall fork) e sono bloccato con uno dei problemi in cui le regole di iptables non venivano applicate correttamente quando il sistema si riavvia. funziona perfettamente sulla maggior parte delle versioni di Android. Ma su alcuni ROMS specifici (CM 10.1) dà il seguente logcatMancato più tempo ActivityManager - Non è un problema di servizio
12-26 08:39:27.116 I/ActivityManager(582):
No longer want dev.ukanth.ufirewall (pid 2297): empty #17
Il mio codice funziona quarantina come qui di seguito,
private Handler mHandler = new Handler(Looper.getMainLooper());
@Override
public void onReceive(final Context context, final Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
if (Api.isEnabled(context.getApplicationContext())) {
final Handler toaster = new Handler() {
public void handleMessage(Message msg) {
if (msg.arg1 != 0) Toast.makeText(context, msg.arg1, Toast.LENGTH_SHORT).show();
}
};
mHandler.post(
// Start a new thread to enable the firewall - this prevents ANR
new Runnable() {
@Override
public void run() {
if (!Api.applySavedIptablesRules(context.getApplicationContext(), false)) {
// Error enabling firewall on boot
final Message msg = new Message();
msg.arg1 = R.string.toast_error_enabling;
toaster.sendMessage(msg);
Api.setEnabled(context.getApplicationContext(), false, false);
}
}
});
// Start a new thread to enable the firewall - this prevents ANR
}
/*Intent i = new Intent(context, StartupService.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(i);*/
}
Potete trovare la mia classe Api.java here.
Sì. Capisco molto bene quella parte. È possibile trovare ulteriori informazioni su questo problema qui, https://github.com/ukanth/afwall/issues/91 – ukanth