在当前程序中调用其他程序的Activity
来源:互联网 发布:柬埔寨网络博客推广 编辑:程序博客网 时间:2024/05/04 09:30
在当前程序中调用其他程序的Activity
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent作用的表现形式为:
1.通过Context.startActivity() or Activity.startActivityForResult() 启动一个Activity;
2.通过 Context.startService() 启动一个服务,或者通过Context.bindService() 和后台服务交互;
3.通过广播方法(比如
Context.sendBroadcast(),Context.sendOrderedBroadcast(),Context.sendStickyBroadcast()) 发给broadcast receivers。
在代码中调用其他Activity我们可以通过intent的方式,通过限定参数格式的方式决定启用哪个注册了的Activity,一个利用intent实现文字共享的应用代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public class ShareViaIntent extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button mButton1 = (Button) findViewById(R.id.renren);
mButton1.setOnClickListener(mShareRenren);
Button mButton2 = (Button) findViewById(R.id.gmail);
mButton2.setOnClickListener(mShareGmail);
Button mButton3 = (Button) findViewById(R.id.sms);
mButton3.setOnClickListener(mShareSMS);
edittext = (EditText) findViewById(R.id.edittext);
edittext.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
// Perform action on key press
Toast.makeText(ShareViaIntent.this, edittext.getText(),
Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
};
/*
* 如果不对数据传输格式setType或者对附加信息puExtra作特殊说明,系统会自动罗列
* 出一张经过android.content.Intent.ACTION_SEND过滤的程序表单,供用户选择
* */
private OnClickListener mShareRenren = new OnClickListener() {
public void onClick(View v) {
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("text/plain"); //确定数据格式
share.putExtra(Intent.EXTRA_SUBJECT, "Title"); //添加附加信息
share.putExtra(Intent.EXTRA_TEXT, edittext.getText().toString());
startActivity(Intent.createChooser(share, "其他转发方式"));
}
};
/*对附加信息作了约束:
* sendmail.putExtra(android.content.Intent.EXTRA_EMAIL,"default@wordsshare.com");
* sendmail.putExtra(android.content.Intent.EXTRA_TEXT, EmailBody);
* 所以下述click事件对应的是发送邮件
* */
private OnClickListener mShareGmail = new OnClickListener() {
public void onClick(View v) {
Intent sendmail = new Intent(android.content.Intent.ACTION_SEND);
sendmail.setType("plain/text");
String EmailBody = edittext.getText().toString();
sendmail.putExtra(android.content.Intent.EXTRA_EMAIL,
"default@wordsshare.com");
sendmail.putExtra(android.content.Intent.EXTRA_TEXT, EmailBody);
startActivity(Intent.createChooser(sendmail, getResources()
.getString(R.string.viaGmail)));
}
};
/*对数据格式和附加信息作了约束:
* sendSMS.putExtra("sms_body", edittext.getText().toString());
* sendSMS.setType("vnd.android-dir/mms-sms");
*所以下述click对应的事件是发送短信
* */
private OnClickListener mShareSMS= new OnClickListener() {
public void onClick(View v) {
Intent sendSMS = new Intent(Intent.ACTION_VIEW);
sendSMS.putExtra("sms_body", edittext.getText().toString());
sendSMS.setType("vnd.android-dir/mms-sms");
startActivity(sendSMS);
}
};
public EditText edittext;
}
然而通过intent+component name的方式我们可以直接指定调用哪一个包或者程序的哪个Activity:
1
2
3
4
Intent intent = new Intent(Intent.ACTION_MAIN);
ComponentName componentName = new ComponentName("包名", "activity名");
intent.setComponent(componentName);
startActivity(intent);
点击查看更多关于intent机制的详细资料
- 在当前程序中调用其他程序的Activity
- 97 调用其他程序中Activity
- 在当前activity中启动自己另一个程序的activity
- 在JAVA程序中调用其他程序
- 如何在JAVA程序中调用windows其他程序
- VC中调用其他程序的函数
- 如何让自己的程序调用其他的Activity?
- 程序中调用当前登录的用户
- [转载]IOS在当前程序中调用任意的第三方程序,类似调
- Android 程序中调用其他程序的方法总结
- Delphi中调用其他程序
- Activity调用过程及生命周期及从当前程序中打开相同包内的程序的过程
- 在程序中调用其他进程或文档
- VS2005中调用已经在其他程序中编写好的dll文件
- 程序调用其他程序
- 当前应用的activity调用其他应用的activity
- 如何在程序中获得其他程序的 图标?
- 如何在Mobile程序中显示其他程序的图标
- 发送短信分享和邮件分享
- directx 学习笔记之一 如何安装并且在visual studio2010的项目中使用directx
- 优秀程序员和一般程序员差别在哪?
- java代码分析及分析工具
- 跨浏览器的hr的CSS控制
- 在当前程序中调用其他程序的Activity
- 再读《The C Programming language》 - 第一章 1.4 字符常量
- VisualC++利用CRegKey和WIN32 API获取系统硬件信息
- 关于UITabbar在push中隐藏与显示
- 如何在一个Service中调用Activity
- TOMCAT 指定 JDK
- android 笔记
- Linux平台用C++封装线程读写锁
- Linux下写者优先的读写锁的设计