在系统进程中执行代码

时间:2016-08-21 04:53:59

标签: android process java-native-interface android-pendingintent pid

我想知道有没有办法在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。如果通过挂起的意图这是不可能的,建议我采用任何其他方法来实现这一点。

1 个答案:

答案 0 :(得分:0)

您无法在系统进程中运行代码。那将是一个巨大的安全漏洞。

使用PendingIntent可以将触发代码委派给其他用户/进程/应用程序,但代码仍会在您的应用程序中使用您的用户ID和权限运行。