当前位置:编程学习 > wap >>

android 联系人 的权限问题

刚学到ContentProvider 想往联系人中通过provider添加一个联系人

public class ContactTest extends AndroidTestCase{

public void testAddContact(){
Uri  uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver resolver = getContext().getContentResolver();
ContentValues values = new ContentValues();
long contactid = ContentUris.parseId(resolver.insert(uri, values));
Uri uri2 = Uri.parse("content://com.android.contacts/data");
//添加姓名
values.put("raw_contact_id", contactid);
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("data2", "小猫");

resolver.insert(uri, values);

//添加电话
values.clear();
values.put("raw_contact_id", contactid);
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("data2", 2);
values.put("data1", "18679211555");
resolver.insert(uri, values);

//添加email
values.clear();
values.put("raw_contact_id", contactid);
values.put("mimetype", "vnd.android.cursor.item/email_v2");
values.put("data2", 2);
values.put("data1", "xiao@163.com");
resolver.insert(uri, values);

}
}


使用单元测试的方法验证时  报错:
java.lang.SecurityException: Permission Denial: writing com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/raw_contacts from pid=365, uid=10041 requires android.permission.WRITE_CONTACTS
at android.os.Parcel.readException(Parcel.java:1247)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
at android.content.ContentProviderProxy.insert(ContentProviderNative.java:408)
at android.content.ContentResolver.insert(ContentResolver.java:587)
at com.example.contact.ContactTest.testAddContact(ContactTest.java:44)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)


这好像是权限问题   但是我在我的MainFest.xml中已经加了权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.contact"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

     <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.sqlite" />
    
       <uses-permission android:name="android.permission.READ_CONTACTS"/>
     <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
     
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="android.test.runner" />
        <activity
            
            android:name="com.example.contact.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>
       
    </application>
   
</manifest>



求救????????
   android   权限 --------------------编程问答-------------------- <permission android:name="android.permission.WRITE_CONTACTS"/> --------------------编程问答-------------------- 改了  还是报错 --------------------编程问答-------------------- android:permission="android.permission.WRITE_EXTERNAL_STORAGE">
<application
         android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/AppTheme"
android:permission="android.permission.WRITE_EXTERNAL_STORAGE" >试试 --------------------编程问答--------------------
引用 2 楼 xiaomoon1990 的回复:
改了  还是报错


下面这个还是不行话建议clean一下 --------------------编程问答--------------------
引用 4 楼 pengguohua1988 的回复:
Quote: 引用 2 楼 xiaomoon1990 的回复:

改了  还是报错


下面这个还是不行话建议clean一下


引用 4 楼 pengguohua1988 的回复:
Quote: 引用 2 楼 xiaomoon1990 的回复:

改了  还是报错


下面这个还是不行话建议clean一下


你说的这些方法都试过了 还是报那个错  崩溃 --------------------编程问答-------------------- 楼主你确定你在你的单元测试代码的manifest xml文件中加了权限声明吗?
<uses-permission android:name="android.permission.READ_CONTACTS" />

是单元测试代码的xml文件中
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,