Android读取联系人权限问题

teamade 2015-09-12 11:27:24
我在manifest.xml文件添加了权限,但是运行的时候一直报错“requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS”,说没有权限。请问如何解决,新手完全不懂

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ynfy.share1" >

<uses-permission android:name="android.permission.READ_CONTACTS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".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>
...全文
7218 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
smileliuyuefree 2016-09-30
  • 打赏
  • 举报
回复 1
6.0以上的是需要手动申请权限的
chsh5423654 2016-05-19
  • 打赏
  • 举报
回复 1
我觉得你应该先看看你这个应用在系统设置中的权限是不是被拒绝了,是的话,手动打开
ifu25 2016-03-11
  • 打赏
  • 举报
回复
去模拟器,应用,找到这个app,将权限中的读取联系人允许。 我也遇到这问题,不知道为什么app启动时没有提示是否允许读取联系人。
suntiezhu101288 2015-11-13
  • 打赏
  • 举报
回复
你的是SDK23么? 是的话可以参考: http://blog.csdn.net/tiezhu_sun/article/details/49818915 http://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en
MR__P 2015-09-14
  • 打赏
  • 举报
回复
读写都加上 三星的个别系统会有这种问题
teamade 2015-09-14
  • 打赏
  • 举报
回复
搜了下,好像是我用的SDK版本的原因,SDK23的权限和之前的不一样
月盡天明 2015-09-14
  • 打赏
  • 举报
回复
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />  
都加上
黎西米 2015-09-13
  • 打赏
  • 举报
回复
还有,你那功能真的只是读而已?没看到代码不能确定
黎西米 2015-09-13
  • 打赏
  • 举报
回复
先加二个读和写权限: <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 看那报错,我觉得你是少了个写的权限没添加。
teamade 2015-09-13
  • 打赏
  • 举报
回复

Cursor cursor = null;
        try {
            getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null, null, null, null);
            while (cursor.moveToNext()) {
                String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                Log.d("MainActivity", name);
                Log.d("MainActivity", phone);
                list.add(name + "\n" + phone);
            }
        } catch (Exception e) {
            e.printStackTrace();;
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
这是读取的代码
黎西米 2015-09-13
  • 打赏
  • 举报
回复
我总感觉你多加了其他功能,感觉你加权限的没问题,我的试调可以,你可以看看,(也可能是我技术太菜没看出来)
黎西米 2015-09-13
  • 打赏
  • 举报
回复
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.widget.TextView;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
TextView tv = new TextView(this);
String string = "";
super.onCreate(savedInstanceState);
// 得到contentresolver对象
ContentResolver cr = getContentResolver();
// 取得电话本中开始一项的光标,必须先moveToNext()
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
while (cursor.moveToNext()) {
// 取得联系人的名字索引
int nameIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = cursor.getString(nameIndex);
string += (contact + ":" + "/n");

// 取得联系人的ID索引值
String contactId = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
// 查询该位联系人的电话号码,类似的可以查询email,photo
Cursor phone = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "
+ contactId, null, null);// 第一个参数是确定查询电话号,第三个参数是查询具体某个人的过滤值
// 一个人可能有几个号码
while (phone.moveToNext()) {
String strPhoneNumber = phone
.getString(phone
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
string += (strPhoneNumber + "/n");
}
phone.close();
}
cursor.close();
// 设置显示内容
tv.setText(string);
// 显示
setContentView(tv);
// setContentView(R.layout.main);
}
}



<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.read"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.read.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>







aircatcher 2015-09-13
  • 打赏
  • 举报
回复
<uses-permission android:name="android.permission.CALL_PHONE"> </uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> </uses-permission><uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.READ_CONTACTS"> </uses-permission><uses-permission android:name="android.permission.WRITE_CONTACTS"> </uses-permission> 这是我做手机联系人时用到的权限 希望对你有所帮助 我也是新手

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧