我想知道有没有办法在android中的系统应用程序进程中执行代码。 我发现通过未决意图,我们可以将我们的工作分配给外部应用程序,如报警管理器或通知,但我仍然发现工作在同一个申请过程中执行。清楚了解
我在按钮点击事件中创建了警报管理器。
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 );
}
});
通过以下代码,我收到广播事件,该事件通过alarmmanager每隔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方法中我期望除了应用程序进程之外的其他进程ID。如果通过挂起的意图这是不可能的,建议我采用任何其他方法来实现这一点。
答案 0 :(得分:0)
您无法在系统进程中运行代码。那将是一个巨大的安全漏洞。
使用PendingIntent
可以将触发代码委派给其他用户/进程/应用程序,但代码仍会在您的应用程序中使用您的用户ID和权限运行。