下面的程序的功能很简单,就是点击编辑通讯录按钮,然后跳转到通讯录编辑界面,但是我的运行结果总是出错,我怀疑是permission的问题,求高手解答,谢谢了MainActivity.javapackage zjftools.android.study;import android.app.*;
import android.os.*;
import android.view.*;
import android.content.*;
import android.widget.*;
import android.net.*;public class MainActivity extends Activity
{
private Button btnEdit;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnEdit = (Button) findViewById(R.id.btnEdit);
btnEdit.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_EDIT);
intent.setData(Uri.parse("content://contacts/people/1"));
startActivity(intent);
}
});
}
}
main.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑通讯录"
android:id="@+id/btnEdit" /></LinearLayout>
AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="zjftools.android.study"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<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>
点击编辑通讯录一开始弹出的窗口
然后弹出的错误窗口
import android.os.*;
import android.view.*;
import android.content.*;
import android.widget.*;
import android.net.*;public class MainActivity extends Activity
{
private Button btnEdit;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnEdit = (Button) findViewById(R.id.btnEdit);
btnEdit.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent();
intent.setAction(Intent.ACTION_EDIT);
intent.setData(Uri.parse("content://contacts/people/1"));
startActivity(intent);
}
});
}
}
main.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑通讯录"
android:id="@+id/btnEdit" /></LinearLayout>
AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="zjftools.android.study"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<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>
点击编辑通讯录一开始弹出的窗口
然后弹出的错误窗口
解决方案 »
- 在学习下载文件的时候出现问题了
- 如何判断EditText中是否为空
- 动态添加按钮后单击会出现红色边框,想去除
- 请教Activity生命周期。
- 如何将底层C++库包装成Java类供上层APP调用?(就像使用Android SDK一样)
- 两个ListActivity不兼容么?
- 新人求帮:android app开发和平常的PC端开发有什么异同
- Android能否实现http透明代理
- 获取 android 日历日程事件
- Android 6.0权限问题,申请权限成功后不回调onRequestPermissionsResult
- android开发休眠问题
- android EditView 和 TextView 内容中插入图片
正解完整的通讯录权限需要加入如下(只做参考):
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
加上这两个权限试试的
貌似加了那么多权限,效果还是一样,依旧出错,郁闷了AndroidManifest.xml是这么写的吧<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="zjftools.android.study"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.CALL_PHONE" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<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>
是你的数据库操作有问题吧
数据库操作不应该是系统做的事吗?我的程序应该只要负责调用Intent就可以了吧会不会还需要添加有关数据库权限的语句?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="zjftools.android.study"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<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>
<uses-permission android:name="android.permission.READ_CONTACTS" /></manifest>
应该不是权限的问题了,2楼给了我这么多权限,还是运行出错也许12楼的观点是正确的,可能是uri有问题,不过貌似书上也是这么写的,难道书上写错了?
intent.setAction(Intent.ACTION_EDIT);
intent.setData(Uri.parse("content://contacts/people/1"));
startActivity(intent);刚试了一下,可以哦,我是android4.1
用这个来搞