9

也许我这样做是错误的,但我想在我自己的应用程序中响应我的 Android AppWidget 的点击事件并启动一个活动。在我设置时,PendingIntent我有另一个Intent我想在单击时启动。我onStartCommand使用这条线:

final Intent mLaunchIntent = (Intent) intent.getParcelableExtra(Widget.EXTRA_INTENT);

当我打电话时,setOnClickPendingIntent我有这条线:

mSendingIntent.putExtra(Widget.EXTRA_INTENT, (Parcelable) mLaunchIntent);

因此,即使在两行中都mLaunchIntent有效Intent,但第一行缺少大量数据。然后调用startActivity失败,因为Intent无效。

我想知道是否有可能以及如何在不严格调用的情况下发送另一个Intent内部,因为该方法简单地将额外内容从一个添加到下一个。我想将这两个分开并易于访问。IntentputExtrasIntent

4

4 回答 4

12

我实际上想通了,解决方案很简单。mLaunchIntent不应强制转换Parcelable或数据丢失。

mSendingIntent.putExtra(Intent.EXTRA_INTENT, mLaunchIntent);

这就是我需要Intent通过另一个发送一个Intent

于 2012-11-14T17:55:14.050 回答
7

您可以通过以下方式将 Intent 放入 Intent:

Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_INTENT, new Intent());

要从 Intent 中检索 Intent(从 Activity 中),您可以执行以下操作:

Intent intent = getIntent().getParcelableExtra(Intent.EXTRA_INTENT);
于 2018-08-03T12:58:03.817 回答
1

你不能使用 aservice来解析 Intent 吗?

于 2012-11-14T15:39:37.947 回答
1

您可以通过多种方式将意图/对象从源传递到目标,反之亦然。一种不使用捆绑包或附加功能的方法是使用带有变量(getter 和 setter)的常用类方法。使用方法传递对象。另一种方法是使用类变量。前任:

public class ClassB  extends Activity{
    public static Object myObject;
    ...
}

public class ClassA extends Activity{
    ...
    @override
    protected void onCreate(Bundle savedInstanceState){
        Object myObject = ClassB.myObject;
    }
}
于 2012-11-14T16:17:02.083 回答