0

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

android.app.activity:

@Override
public void startActivity(Intent intent) {      
    intent.putExtra("packageName", this.getPackageName());
    startActivity(intent, null);
}

我编写了一个具有 CALL_PHONE 权限的测试应用程序。作为调试步骤,我还尝试查看是否可以从调用应用程序的 Intent 中传递一些内容:

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

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);

但是在我的 BroadcastReceiver 中,该意图没有来自我所做的 Activity 源文件更改的意图值,也没有我从调用活动中添加的意图值。

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

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"));

但是,“packageName”和“StubTest”始终为空。

4

0 回答 0