2016-08-21 2 views
0

Мне нравится знать, есть ли способ выполнить код в системном приложении в android. Я нашел в ожидании намерения мы можем назначить нашу работу для выполнения в иностранной заявке, такой как диспетчер аварийных сигналов или уведомление, но все же я нашел, что задание выполняется в том же процессе приложения. Для четкого пониманияВыполнение кода в системном процессе

Здесь я создаю диспетчер аварийных сообщений при событии buttonclick ,

button.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
     Log.d("processstatus", "pid="+android.os.Process.myPid()); 
     //creating an alarm manager 
     alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent intent = new Intent(context, customreciever.class); 
     pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
     alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime() +10*1000, pendingIntent); 
    } 
}); 

Через нижний код я получаю широковещательное событие, которое запускается каждые 10 секунд через будильника.

public class customreciever extends BroadcastReceiver { 

    @Override 
    public void onReceive(final Context context, Intent intent) { 
    // Same app process id expecting alaramanager process id 
      Log.d("processstatus", "pid="+android.os.Process.myPid()); 
    } 
} 

внутри OnReceive метода я ожидал различный идентификатор процесса, кроме применения process.if это не представляется возможным через ожидание намерения, предложить мне любой другой подход к достижению этой цели.

ответ

0

Вы не можете запускать код в системном процессе. Это будет огромная дыра в безопасности.

Использование PendingIntent позволяет делегировать запуск кода другого пользователя/процесс/приложение, но код все еще работает в вашем приложении с вашими ID пользователя и ваши правами.

Смежные вопросы