android意图
A. Android 显示意图和隐式意图的区别
意图在android的应用开发中是很重要的,明白了意图的作用和使用后,对开发会有很大帮助。如果没有把意图搞懂,以后开发应用会感觉缺些什么。
意图的作用:
1、激活组件
2、携带数据
3、意图的匹配(运用到隐式意图)
android基本的设计理念是鼓励减少组件间的耦合,因此android提供了Intent(意图),用意图激活其他组件。Intent提供了一种通用的消息系统,它允许在你的应用程序与其他应用程序间传递Intent来执行和产生事件。使用Intent可以激活android应用的三个核心组件:活动、服务和广播接收器。Intent代表了要执行的某一种想法,要干的某一件事情。
意图可划分为显式意图和隐式意图。
显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名得Intent为显式意图,显式意图明确指定了Intent应该传递给那个组件。
如:Intent intent = new Intent();
intent.setAction(Activity1.this,Activity2.class);
startActivity(intent);
显式意图很简单,此处就不再赘述。
隐式意图:没有明确指定组件名得Intent为隐式意图。android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
如调用电话拨号:Intent intent = new Intent();
intent.setAction("android.intent.action.CALL");
intent.setData("Uri.parse("tel:") + mobile");//mobile为电话号码(是数字)
startActivity(intent);
B. android 用意图打开闹钟
start Alarm:
Intent intent = new Intent();
intent.setAction("android.intent.action.SET_ALARM");
startActivity(intent);
borrowed by:http://www.cnblogs.com/lee0oo0/archive/2012/06/24/2560170.html
C. android 接收短信广播意图 代码如下 不工作啊 在线等待答案
我也觉得可以工作,具体看看有没有报错什么的,保险起见加上intent.getAction == "android.provider.Telephony.SMS_RECEIVED"
D. Android意图开启了其他意图如何返回到前面的意图
意图和意图过滤器Intents and Intent Filters
一个应用程序的三个核心组件-活动,服务和广播接收器是通过消息即意图(Intents)来激活的。Intent息传送是相同或不同应用中组件运行时晚绑定的一种机制。意图本身,一个意图对象,是一个包含被执行操作抽象描述的被动的数据结构-或者,对于广播而言,是某件已经发生并被声明的事情的描述。存在不同的机制来传送意图到每种组件中:
• 一个意图对象是传递给Context.startActivity()或者Activity.startActivityForResult()来启动一个活动或者让一个存在的活动去做某些新的事情。
• 一个意图对象是传递给Context.startService()来发起一个服务或者递交新的指令给运行中的服务。类似的,一个意图能被传递给Context.bindService() 来在调用组件和一个目标服务之间建立连接。作为一个可选项,它可以发起这个服务如果还没运行的话。
• 传递给任意广播方法(例如Context.sendBroadcast(),Context.sendOrderedBroadcast(), 或者Context.sendStickyBroadcast())的意图对象被传递给所有感兴趣的广播接收者。许多种广播产生于系统代码。
在每个例子里,Android系统找到合适的活动,服务,或者一组广播接收者来回应这个意图,必要时实例化它们。这些消息传送系统没有重叠:广播意图仅被传递给广播接收者,永远不会给活动或者服务。一个传送给startActivity()的意图是只会被传递给一个活动,永远不会给一个服务或广播接收者,如此类推。
这篇文档以意图对象的描述开始,然后描述Android映射意图到组件的规则-如何解决哪个组件应该接收一个意图消息。对于没有显式命名一个目标组件的意图,这个过程包括对照与潜在目标相关联的意图过滤器来测试这个意图对象。
意图对象Intent Objects
一个意图Intent对象是一堆信息。它包含接收这个意图的组件感兴趣的信息(例如将要采取的动作和操作的数据)再加上Android系统感兴趣的信息(例如应该处理这个意图的组件类别和如何启动一个目标活动的指令):
组件名称Component name
应该处理这个意图的组件名字. 这个字段是一个ComponentName对象- 一个组合物:目标组件的完全合格的类名 (比如"com.example.project.app.FreneticActivity") 以及应用程序描述文件中设置的组件所在包的名字(比如, "com.example.project"). 这个组件名字的包部分和描述文件中设置的包名字不一定要匹配。
组件名字是可选的。如果被设置了,这个意图对象将被传递到指定的类。如果没有, Android使用另外的意图对象中的信息去定位一个合适的目标- 请看本文稍后描述的意图解析Intent Resolution。
组件名字通过如下方法:setComponent(),setClass(), 或者setClassName()设置并通过getComponent()读取。
E. 求Android实现通过意图来打开文件的代码 (比如我这里有一个txt文本我需要通过第三方软件打开
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "text/plain");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
F. android如何通过隐式意图寻找手机中能打开图片、音视频的软件,具体代码是怎么写的
java">Intentintent=newIntent();
intent.setType("image/*");//通过type来让系统选择视频video/*
intent.setAction(Intent.ACTION_GET_CONTENT);
G. android怎样获取拨打电话的意图的数据
使用意图传递数据之通用方式。
测试应用:当前页面点击button传递数据到一个新的页面显示在textview中。
首先在,mainActivity.xml文件中加入一个button按钮
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="测试使用Intent传递数据" >
</Button>
然后在,MainActivity.java中加入
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//加载布局文件
button=(Button)this.findViewById(R.id.button);//获取button
button.setOnClickListener(new View.OnClickListener() {//点击button事件
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建意图
Intent intent=new Intent(Main.this, OtherActivity.class);
//在意图中传递数据
intent.putExtra("name", "张三");
intent.putExtra("age", 21);
intent.putExtra("address", "北京");
//启动意图
startActivity(intent);
}
});
// Log.i(TAG, "onCreate methos is executed");
}
在布局文件中,新建一个other.xml文件。
<TextView
android:id="@+id/msg"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</TextView>
然后新建一个OtherActivity.class 并加入
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
textView = (TextView)this.findViewById(R.id.msg);//获取文本框
Intent intent = getIntent();//获取意图对象
Integer age = intent.getIntExtra("age", 0);//获取意图对象数据
String name = intent.getStringExtra("name"); //获取意图对象数据
String address = intent.getStringExtra("address");//获取意图对象数据
textView.setText("age--->>"+age+"\n"+"name--->>"+name+"\n"+"address--->>"+address);//设置到文本框
}
最后不要忘记在清单文件中加入OtherActivity。
<activity android:name=".OtherActivity"></activity>