Android 使用ContentProvider 实现多个activity灵活显示,实现Intent隐式传值.
2013-10-18 14:00
429 查看
1. 在Manifest.xml添加 Provider关联
<application ...>
<provider android:name="TestProvider" android:authorities="com.example.testandroid"/>
<activityandroid:name="com.example.testandriod.ThirdActivity">
<intent-filter>
<actionandroid:name="android.intent.action.VIEW"/>
<dataandroid:mimeType="com.cn.***/test"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity>
...
</activity>
</application>
其中的<data>标签是标识你的activity,必须采用A/B的形式。
2.建立对应的Provider类
public classTestProvider
extendsContentProvider {
@Override
public
int delete(Uri arg0,String arg1,
String[] arg2) {
//
TODO Auto-generated method stub
return 0;
}
@Override
public
String getType(Uri arg0) {
//
TODO Auto-generated method stub
Log.d("debug", arg0+"");
return"com.cn.***/test";//找xml文件中对应的activity.
}
@Override
public
Uri insert(Uri arg0,ContentValues arg1) {
//
TODO Auto-generated method stub
returnnull;
}
@Override
publicboolean
onCreate() {
//
TODO Auto-generated method stub
returnfalse;
}
@Override
public Cursorquery(Uri arg0,String[] arg1,
String arg2,String[] arg3,
String arg4) {
//
TODO Auto-generated method stub
returnnull;
}
@Override
public
int update(Uri arg0,ContentValues arg1,
String arg2, String[] arg3) {
//
TODO Auto-generated method stub
return 0;
}
}
其中getType的返回值必须是和你的Manifest.xml文件中配置的<data mimeType="xxxx">xxx要完全一致。
3.在activity中实现如下代码:
Intent intent =new
Intent();
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("content://com.example.testandroid/one"));
// 这段常量会传递给上面的Provider的getType函数;
intent.setAction("android.intent.action.VIEW");
startActivity(intent);
即可启动任意activity,并传值.
<application ...>
<provider android:name="TestProvider" android:authorities="com.example.testandroid"/>
<activityandroid:name="com.example.testandriod.ThirdActivity">
<intent-filter>
<actionandroid:name="android.intent.action.VIEW"/>
<dataandroid:mimeType="com.cn.***/test"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity>
...
</activity>
</application>
其中的<data>标签是标识你的activity,必须采用A/B的形式。
2.建立对应的Provider类
public classTestProvider
extendsContentProvider {
@Override
public
int delete(Uri arg0,String arg1,
String[] arg2) {
//
TODO Auto-generated method stub
return 0;
}
@Override
public
String getType(Uri arg0) {
//
TODO Auto-generated method stub
Log.d("debug", arg0+"");
return"com.cn.***/test";//找xml文件中对应的activity.
}
@Override
public
Uri insert(Uri arg0,ContentValues arg1) {
//
TODO Auto-generated method stub
returnnull;
}
@Override
publicboolean
onCreate() {
//
TODO Auto-generated method stub
returnfalse;
}
@Override
public Cursorquery(Uri arg0,String[] arg1,
String arg2,String[] arg3,
String arg4) {
//
TODO Auto-generated method stub
returnnull;
}
@Override
public
int update(Uri arg0,ContentValues arg1,
String arg2, String[] arg3) {
//
TODO Auto-generated method stub
return 0;
}
}
其中getType的返回值必须是和你的Manifest.xml文件中配置的<data mimeType="xxxx">xxx要完全一致。
3.在activity中实现如下代码:
Intent intent =new
Intent();
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("content://com.example.testandroid/one"));
// 这段常量会传递给上面的Provider的getType函数;
intent.setAction("android.intent.action.VIEW");
startActivity(intent);
即可启动任意activity,并传值.
相关文章推荐
- Android 一些关于 Activity 的技巧
- Android 一些关于 Activity 的技巧
- Android调用天气预报的WebService简单例子
- android各种屏幕设置(全屏、横屏、竖屏...)
- ubuntu 安装android 开发环境
- 在android目录添加自己的项目工程
- android 错误
- Android 在程序运行时,有若干个activity,怎么在退出这个Activity是,释放掉它所占用的运行空间
- android欢迎界面的绘制
- Android使用FFMPEG解码成PPM图片
- Android笔记之ImageView
- Android4.1 wpa_supplicant的使用
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- Android 可展开列表组件 ExpandableListView
- Android 可展开列表组件 ExpandableListView
- (1)Android开源项目介绍
- android 超好用的两次退出的代码, 值得收藏
- LocalActivityManager如何在一个Activity的一部分中显示其他Activity
- Android之MIME TYPE
- android 解析xml -XmlPullParser