【问题标题】:Executing Code in system process在系统进程中执行代码
【发布时间】:2016-08-21 04:53:59
【问题描述】:

我想知道有没有办法在 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 方法中,我期望与应用程序进程不同的进程 ID。如果通过待定意图无法实现,请建议我使用其他任何方法来实现这一点。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2012-06-09
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      相关资源
      最近更新 更多