Android源代码更改为将意图调用程序传递给广播接收器

Android源代码更改为将意图调用程序传递给广播接收器,android,android-intent,broadcastreceiver,bundle,Android,Android Intent,Broadcastreceiver,Bundle,我正在尝试修改Android源代码,以便BroadcastReceiver可以知道是谁调用了该操作 android.app.activity: @Override public void startActivity(Intent intent) { intent.putExtra("packageName", this.getPackageName()); startActivity(intent, null); } 我编写了一个测试应用程序,该应用程序具有CALL

我正在尝试修改Android源代码,以便BroadcastReceiver可以知道是谁调用了该操作

android.app.activity:

@Override
public void startActivity(Intent intent) {      
    intent.putExtra("packageName", this.getPackageName());
    startActivity(intent, null);
}
我编写了一个测试应用程序,该应用程序具有CALL_PHONE权限。作为调试步骤,我还尝试查看是否可以从调用应用程序中传递一些内容:

呼叫应用程序(应用程序1):

但在我的BroadcastReceiver中,该intent没有我所做的活动源文件更改中的intent值,也没有我从调用活动中添加的intent值

具有广播接收器的单独应用程序(应用程序2):

公共类CallReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
Bundle=intent.getExtras();
Set k=bundle.keySet();
如果(k!=null&&k.size()>0){
迭代器i=k.迭代器();
while(i.hasNext()){
字符串键=i.next();
试一试{
System.out.println(“KEY:+KEY+”=“+bundle.getString(KEY));
}捕获(例外e){
logIt(“跳过键:+键”);
}
}
}
System.out.println(bundle.getString(“packageName”);
System.out.println(bundle.getString(“StubTest”);

但是,“packageName”和“StubTest”一直都是空的。

你试过使用intent.getStringExtra(“StubTest”)吗?我不知道当你没有在其他地方设置packageName时,你是如何得到它的。是的,我也试过了。“packageName”是在startActivity中设置的。我修改了该方法的Android源代码。(你可以看到我在上面的原始帖子中粘贴了我的更改。)
Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:8005551212"));
dialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
dialIntent.putExtra("StubTest", "it worked!");
startActivity(dialIntent);
public class CallReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();
    Set<String> k = bundle.keySet();
    if (k!=null && k.size() > 0) {
        Iterator<String> i = k.iterator();
        while (i.hasNext()) {
            String key = i.next();
            try {
                System.out.println("KEY: " + key + "=" + bundle.getString(key));
            } catch (Exception e) {
                logIt("skipping KEY: " + key);
            }
        }
    }
    System.out.println(bundle.getString("packageName"));
    System.out.println(bundle.getString("StubTest"));