我的代码如下:
public class MainActivity extends Activity implements View.OnClickListener { ContentResolver resolver = this.getContentResolver();//这里会报空指针的错误 @Override protected void onCreate(Bundle savedInstanceState) {....} .... }
看了网上一些人的帖子也是这样直接使用this得到的。
============================================
上面的问题没有说清楚,我是想要获取手机上的联系人的信息。自己想象这个getContentResolver
貌似应该是联系人APP,提供的,我这里的this用的对么?
清单文件中我声明的权限如下:(有没有少权限?)
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
于2015年10月22日 14:01:48编辑
发现问题了,在清单文件AndroidManifest.xml中没有声明:
<provider android:authorities="call_log" android:name="CallLogProvider" android:syncable="false" android:multiprocess="false" android:readPermission="android.permission.READ_CONTACTS" android:writePermission="android.permission.WRITE_CONTACTS" > </provider>
<p>
<br>
</p>
<p>
<br>
</p>
不过声明了之后运行起来,IDE报错说:Failure [INSTALL_FAILED_CONFLICTING_PROVIDER]
然后在上面的
android:name="CallLogProvider"
<p>
中CallLogProvider显示红字,光标移动上去,状态栏上显示:cannot resolve symbol 'CallLogProvier'
</p>
<p>
那么是什么问题了。
</p>
问题解决了。根本没有CallLogProvider,并且也不需要在AndroidManifest.xml中声明。在清单文件中只需要声明:
<uses-permissionandroid:name="android.permission.READ_CALL_LOG"/><!--读取通话记录--><uses-permissionandroid:name="android.permission.WRITE_CALL_LOG"/><!--写通话记录-->即可。然后在具体的Activity中需要使用getContentResolver的时候要注意,必须在onCreate()之后
获取,否则报空指针错误。因为onCreate()之后才有当前Activity的this
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。