为什么我自己定义的ContentProvider用contentResolve

杨裕潘 杨裕潘 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是内容提供者代码片段

private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
private static final int QUERYSUCESS = 0;
private static final int INSERTSUCESS = 1;
private static final int UPDATESUCESS = 2;
private static final int DELETESUCESS = 3;
private MyOpenHelper myOpenHelper;
static{


sURIMatcher.addURI("com.itheima.provider", "query", QUERYSUCESS);
sURIMatcher.addURI("com.itheima.provider", "insert", INSERTSUCESS);
sURIMatcher.addURI("com.itheima.provider", "update", UPDATESUCESS);
sURIMatcher.addURI("com.itheima.provider", "delete", DELETESUCESS);
}



@Override
public boolean onCreate() {
myOpenHelper = new MyOpenHelper(getContext());
return false;
}


@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
int code = sURIMatcher.match(uri);
if (code ==QUERYSUCESS )
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Cursor cursor = db.query("info", projection, selection, selectionArgs, null, null, sortOrder);
getContext().getContentResolver().notifyChange(uri, null);
return cursor;

}else{
throw new IllegalArgumentException("你错了");

}


}

这是解析的

Uri uri = Uri.parse("content://com.itheima.provider/query");

Cursor cursor = getContentResolver().query(uri, new String[]{"name","money"}, null, null, null);
if (cursor!=null) {

while(cursor.moveToNext()){
String name = cursor.getString(0);
String money = cursor.getString(1);

System.out.println("name:"+name+"---"+money);

}
}

这是内容提供者的清单文件
   <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.itheima.db.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<!-- 配置内容提供者 -->
<provider
android:name="com.itheima.db.AccountProvider"
android:readPermission="com.read"
android:authorities="com.itheima.provider" >
</provider>
</application>
这是报的异常
12-18 14:39:08.586: E/AndroidRuntime(13025): FATAL EXCEPTION: main
12-18 14:39:08.586: E/AndroidRuntime(13025): Process: com.itheima.readdb, PID: 13025
12-18 14:39:08.586: E/AndroidRuntime(13025): java.lang.IllegalStateException: Could not execute method of the activity
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.view.View$1.onClick(View.java:3823)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.view.View.performClick(View.java:4438)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.view.View$PerformClick.run(View.java:18422)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Handler.handleCallback(Handler.java:733)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Handler.dispatchMessage(Handler.java:95)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Looper.loop(Looper.java:136)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.app.ActivityThread.main(ActivityThread.java:5017)
12-18 14:39:08.586: E/AndroidRuntime(13025): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 14:39:08.586: E/AndroidRuntime(13025): at java.lang.reflect.Method.invoke(Method.java:515)
12-18 14:39:08.586: E/AndroidRuntime(13025): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-18 14:39:08.586: E/AndroidRuntime(13025): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-18 14:39:08.586: E/AndroidRuntime(13025): at dalvik.system.NativeStart.main(Native Method)
12-18 14:39:08.586: E/AndroidRuntime(13025): Caused by: java.lang.reflect.InvocationTargetException
12-18 14:39:08.586: E/AndroidRuntime(13025): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 14:39:08.586: E/AndroidRuntime(13025): at java.lang.reflect.Method.invoke(Method.java:515)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.view.View$1.onClick(View.java:3818)
12-18 14:39:08.586: E/AndroidRuntime(13025): ... 11 more
12-18 14:39:08.586: E/AndroidRuntime(13025): Caused by: java.lang.SecurityException: Permission Denial: opening provider com.itheima.db.AccountProvider from ProcessRecord{b1297448 13025:com.itheima.readdb/u0a5} (pid=13025, uid=10005) that is not exported from uid 10004
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Parcel.readException(Parcel.java:1465)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.os.Parcel.readException(Parcel.java:1419)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2848)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.app.ActivityThread.acquireProvider(ActivityThread.java:4415)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:2192)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.content.ContentResolver.acquireProvider(ContentResolver.java:1378)
12-18 14:39:08.586: E/AndroidRuntime(13025): at android.content.ContentResolver.insert(ContentResolver.java:1184)
12-18 14:39:08.586: E/AndroidRuntime(13025): at com.itheima.readdb.MainActivity.click1(MainActivity.java:34)
...全文

相关推荐

Android CursorLoader 完整Demo

一个通过Android CursorLoader 实现的异步加载数据查询联系人的完整Demo,里面自定义了ContentProvider,显示联系人部分用了ContentResolve.query 方

Liu_LongPo

Android中实现ContentResolver对系统中所有联系人的访问

在Android开发中,实现对系统中所有联系人的访问是通过ContentResolver类与ContentProvider的结合来完成的。Android系统提供了标准的ContentProvider,

weixin_38633475

技术转移机构如何基于数据提升项目撮合精准度?.docx

技术转移机构如何基于数据提升项目撮合精准度?

BIZKEEN

超扭滑模与快速终端滑模的永磁同步电机无感控制:理论、离散化实现与仿真研究(Simulink仿真实现)

内容概要:本文系统研究了超扭滑模控制(STSMC)与快速终端滑模控制(FTSMC)在永磁同步电机(PMSM)无感控制中的应用,重点涵盖其理论基础、离散化实现方法及Simulink仿真验证。文章深入阐述了两种高阶滑模控制策略的设计原理,利用磁链无感观测技术实现转子位置与速度的精确估计,从而省去物理传感器,有效提升了系统的可靠性与鲁棒性。同时,提供了完整的Simulink仿真模型构建方案,包括控制器设计、关键参数整定及动态响应性能分析,充分验证了所提出的方法在零速与低速工况下的卓越控制性能和有效性。; 适合人群:具备电机控制、现代控制理论基础知识及熟练掌握MATLAB/Simulink仿真技能的研究生、科研人员与工程技术人员。; 使用场景及目标:①深入理解高阶滑模控制在电机驱动系统中的设计思想与具体实现;②掌握基于滑模观测器的无感控制核心技术;③开展永磁同步电机高性能控制算法的理论研究、仿真验证与工程化探索。; 阅读建议:建议将文中详尽的理论推导与Simulink仿真模型相结合进行学习,重点关注滑模面的构建、抖振抑制策略的实施以及离散化处理的细节,有条件的研究者可进一步将算法移植到DSP等硬件平台进行实验验证,以深化对理论的理解并检验其实际应用效果。

长安程序猿

多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)

内容概要:本文系统阐述了基于Matlab的多源动态最优潮流分布鲁棒优化方法,聚焦于IEEE118节点电力系统,旨在应对高比例可再生能源接入背景下源荷双重不确定性所带来的调度挑战。该方法深度融合分布鲁棒优化理论,通过构建能够抵御最坏情况概率分布的决策模型,有效提升了电力系统在复杂不确定性环境下的运行安全性、经济性与可靠性。研究不仅提供了完整的Matlab代码实现,便于结果复现与算法验证,还特别关注了含风电等新能源的现代电网低碳调度问题,为解决实际工程中的优化调度难题提供了强有力的理论支撑和技术工具。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、科研人员及从事智能电网优化运行、能源系统规划等相关领域的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源接入的电力系统动态最优潮流问题;②掌握分布鲁棒优化在电力系统经济调度、低碳调度中的建模思想与求解方法;③利用IEEE118标准测试系统进行算法有效性验证与性能对比分析;④基于所提供的Matlab代码进行二次开发,探索新型不确定性优化理论在电力系统中的创新应用。; 阅读建议:建议读者结合电力系统最优潮流、不确定性优化理论(特别是分布鲁棒优化)的背景知识进行学习,重点关注模型的构建逻辑、目标函数与约束条件的设计原理,以及Matlab代码的具体实现细节。在学习过程中,应动手调试代码,尝试修改系统参数(如新能源出力波动范围、负荷水平等),以观察不同场景下优化结果的变化,从而深刻理解该方法的适应性、优势及其潜在的局限性。

天天程序猿
评论 9
收藏 已收藏
分享
返回顶部
杨裕潘
Android 80,490 成员 91,375 内容