目前自学Android。
我的问题是我何时需要使用参数来实例化Intent
?
有时我写这个:
Intent baseIntent = new Intent(Intent.ACTION_VIEW, googleURI);
其他时间:
Intent explicitIntent = new Intent(this, ExplicitlyLoadedActivity.class);
甚至有时间如下:
Intent intent = new Intent();
何时填写构造函数的参数?
什么样的参数?
修改
我想说清楚。
当我说“何时”时,我并不是说当我想创建一个空构造函数时,我应该使用new Intent()
;
我知道new Intent()
会导致空构造函数。我的意思是在什么情况下我想使用空构造函数,因此使用new Intent();
?
答案 0 :(得分:1)
关于意图:
意图用于在组件(活动,服务,广播接收器)之间交换数据,但不是直接交换。这些组件将其意图发送到操作系统,然后操作系统将转发到目标组件。
意图包含以下元素:操作,数据,组件名称,类别,额外,标志。
您可以通过这些组合构建新意图。
如果您想要启动一项新活动,那么只需使用显式组件名称(类)创建一个意图(如果您想提供一些数据,可以额外添加此意图那个活动)。
Intent intent = new Intent(this, DisplayMessageActivity.class);
startActivity(intent);
您可以使用广播接收器注册系统事件(如启动完毕,电量不足,来电等)。当某些事情发生时,您将获得一个包含ACTION的意图,根据此操作,您可以决定正在进行的事件。 (例如,Intent.ACTION_BOOT_COMPLETED)
您还可以创建自己的操作,并向自己发送广播。
Intent in = new Intent("SOMEACTION");
sendBroadcast(in);
隐含意图。
如果您将意图的组成部分留空,则操作系统将搜索可以处理此问题的正确应用程序。 例如:
如果您想给某人打电话,那么您需要使用您的数据(电话号码)添加所需的操作,并将组件参数留空。
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "Your Phone_number"));
startActivity(intent);
答案 1 :(得分:0)
1. Intent()
,创建一个空意图
public Intent() {
}
2. Intent(Intent o)
,复制构造函数
public Intent(Intent o) {
this.mAction = o.mAction;
....
}
3. Intent(String action)
,使用给定的操作创建意图
public Intent(String action) {
setAction(action);
}
4. Intent(String action, Uri uri)
,使用给定的操作和给定的数据URL创建意图
public Intent(String action, Uri uri) {
setAction(action);
mData = uri;
}
5. Intent(Context context, Class<?> cls)
,为特定组件创建意图
public Intent(Context packageContext, Class<?> cls) {
mComponent = new ComponentName(packageContext, cls);
}
6. Intent(String action, Uri uri, Context packageContext, Class<?> cls)
,为具有指定操作和数据的特定组件创建意图
public Intent(String action, Uri uri,
Context packageContext, Class<?> cls) {
setAction(action);
mData = uri;
mComponent = new ComponentName(packageContext, cls);
}
并且所有参数都有get
&amp; set
方法,例如:
Intent baseIntent = new Intent(Intent.ACTION_VIEW, googleURI);
等于
Intent baseIntent = new Intent();
baseIntent.setAction(Intent.ACTION_VIEW);
baseIntent.setData(googleURI);
并且
Intent explicitIntent = new Intent(this, ExplicitlyLoadedActivity.class);
等于
Intent explicitIntent = new Intent();
explicitIntent.setComponent(new Component(this, ExplicitlyLoadedActivity.class));
希望它有所帮助。
答案 2 :(得分:0)
Intent的主要内容是ACTION(可能是CATEGORY),这也是初始化Intent的原因(你可以从Manifest中看到一个IntentFilter的详细信息,它肯定显示了Intent的目的) 例如:创建Intent以手动启动活动,或从已安装的应用程序启动活动,......
没有太多理由通过空构造函数创建一个Intent(我经常通过空构造函数创建,然后使用SET方法添加动作,类别,包数据......)。当没有针对此Intent的动作时,意图的目的变得不太清楚。例如:当在Activity中使用setResult()时,你可以放回一个包含数据的Intent,不需要为该Intent放置一个动作。