Android context.getContextResolved应用程序已停止

Android context.getContextResolved应用程序已停止,android,android-context,Android,Android Context,我的应用程序有问题。 我正在尝试执行查询,但应用程序每次都会停止。 尝试执行查询时发生此错误。 我从Android Pro 3书中学习,但这本书中的代码不受欢迎: package com.example.contactsabuout; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts; import android.provider.ContactsContract; impor

我的应用程序有问题。 我正在尝试执行查询,但应用程序每次都会停止。 尝试执行查询时发生此错误。 我从Android Pro 3书中学习,但这本书中的代码不受欢迎:

package com.example.contactsabuout;

import android.net.Uri;
import android.os.Bundle;
import android.provider.Contacts;
import android.provider.ContactsContract;
import android.app.Activity;
import android.database.Cursor;
import android.util.Log;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

    private static Context context;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MainActivity.context = getApplicationContext();

        Log.v("INFO", "Completed: onCreate.");
    }

    public static Context getAppContext() {
        return MainActivity.context;
    }

    public void doQuery(View view) {

         Uri peopleBaseUri = ContactsContract.Contacts.CONTENT_URI;
         Log.v("II","Button clicked.");
         Log.v("II", "Uri for ContactsContract.Contacts: " + peopleBaseUri);
         Context context = getAppContext();
         Log.v("II", "Got context: " + context);
         Cursor cur;
         Log.v("II", "Created cursor: cur");
         cur = context.getContentResolver().query(peopleBaseUri, null, null, null, null);

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
来自LogCat

10-28 17:45:02.513: V/INFO(4677): Completed: onCreate.
10-28 17:45:02.613: D/libEGL(4677): loaded /system/lib/egl/libGLES_android.so
10-28 17:45:02.653: D/libEGL(4677): loaded /system/lib/egl/libEGL_adreno200.so
10-28 17:45:02.723: D/libEGL(4677): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
10-28 17:45:02.723: D/libEGL(4677): loaded /system/lib/egl/libGLESv2_adreno200.so
10-28 17:45:03.014: I/Adreno200-EGLSUB(4677): <ConfigWindowMatch:2078>: Format RGBA_8888.
10-28 17:45:03.054: D/OpenGLRenderer(4677): Enabling debug mode 0
10-28 17:45:03.254: D/OpenGLRenderer(4677): has fontRender patch
10-28 17:45:03.274: D/OpenGLRenderer(4677): has fontRender patch
10-28 17:45:12.873: V/II(4677): Button clicked.
10-28 17:45:12.873: V/II(4677): Uri for ContactsContract.Contacts: content://com.android.contacts/contacts, rest will be null
10-28 17:45:12.873: V/II(4677): Got context: android.app.Application@40d83d90
10-28 17:45:12.873: V/II(4677): Created cursor: cur
10-28 17:45:12.933: D/AndroidRuntime(4677): Shutting down VM
10-28 17:45:12.933: W/dalvikvm(4677): threadid=1: thread exiting with uncaught exception (group=0x40aaf228)
10-28 17:45:12.953: E/AndroidRuntime(4677): FATAL EXCEPTION: main
10-28 17:45:12.953: E/AndroidRuntime(4677): java.lang.IllegalStateException: Could not execute method of the activity
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.view.View$1.onClick(View.java:3071)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.view.View.performClick(View.java:3538)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.view.View$PerformClick.run(View.java:14330)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.os.Handler.handleCallback(Handler.java:608)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.os.Looper.loop(Looper.java:156)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.app.ActivityThread.main(ActivityThread.java:4977)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at java.lang.reflect.Method.invokeNative(Native Method)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at java.lang.reflect.Method.invoke(Method.java:511)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at dalvik.system.NativeStart.main(Native Method)
10-28 17:45:12.953: E/AndroidRuntime(4677): Caused by: java.lang.reflect.InvocationTargetException
10-28 17:45:12.953: E/AndroidRuntime(4677):     at java.lang.reflect.Method.invokeNative(Native Method)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at java.lang.reflect.Method.invoke(Method.java:511)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.view.View$1.onClick(View.java:3066)
10-28 17:45:12.953: E/AndroidRuntime(4677):     ... 11 more
10-28 17:45:12.953: E/AndroidRuntime(4677): Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.HtcContactsProvider2 uri content://com.android.contacts/contacts from pid=4677, uid=10155 requires android.permission.READ_CONTACTS
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.os.Parcel.readException(Parcel.java:1332)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.content.ContentProviderProxy.query(ContentProviderNative.java:406)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at android.content.ContentResolver.query(ContentResolver.java:315)
10-28 17:45:12.953: E/AndroidRuntime(4677):     at com.example.contactsabuout.MainActivity.doQuery(MainActivity.java:47)
10-28 17:45:12.953: E/AndroidRuntime(4677):     ... 14 more
10-2817:45:02.513:V/INFO(4677):已完成:onCreate。
10-2817:45:02.613:D/libEGL(4677):已加载/system/lib/egl/libGLES_android.so
10-2817:45:02.653:D/libEGL(4677):loaded/system/lib/egl/libEGL_adreno200.so
10-2817:45:02.723:D/libEGL(4677):loaded/system/lib/egl/libGLESv1_CM_adreno200.so
10-2817:45:02.723:D/libEGL(4677):loaded/system/lib/egl/libGLESv2_adreno200.so
10-28 17:45:03.014:I/Adreno200 EGLSUB(4677)::格式RGBA_8888。
10-28 17:45:03.054:D/OpenGLRenderer(4677):启用调试模式0
10-28 17:45:03.254:D/OpenGLRenderer(4677):具有fontRender修补程序
10-28 17:45:03.274:D/OpenGLRenderer(4677):具有fontRender修补程序
10-2817:45:12.873:V/II(4677):点击按钮。
10-28 17:45:12.873:V/II(4677):联系人的Uri合同。联系人:content://com.android.contacts/contacts,rest将为空
10-2817:45:12.873:V/II(4677):获取上下文:android.app。Application@40d83d90
10-28 17:45:12.873:V/II(4677):创建的游标:cur
10-28 17:45:12.933:D/AndroidRuntime(4677):关闭虚拟机
10-28 17:45:12.933:W/dalvikvm(4677):threadid=1:线程退出时出现未捕获异常(组=0x40aaf228)
10-2817:45:12.953:E/AndroidRuntime(4677):致命异常:main
10-28 17:45:12.953:E/AndroidRuntime(4677):java.lang.IllegalStateException:无法执行活动的方法
10-2817:45:12.953:E/AndroidRuntime(4677):在android.view.view$1.onClick(view.java:3071)
10-28 17:45:12.953:E/AndroidRuntime(4677):在android.view.view.performClick(view.java:3538)
10-28 17:45:12.953:E/AndroidRuntime(4677):在android.view.view$PerformClick.run(view.java:14330)
10-2817:45:12.953:E/AndroidRuntime(4677):在android.os.Handler.handleCallback(Handler.java:608)上
10-28 17:45:12.953:E/AndroidRuntime(4677):在android.os.Handler.dispatchMessage(Handler.java:92)上
10-2817:45:12.953:E/AndroidRuntime(4677):在android.os.Looper.loop(Looper.java:156)上
10-28 17:45:12.953:E/AndroidRuntime(4677):位于android.app.ActivityThread.main(ActivityThread.java:4977)
10-28 17:45:12.953:E/AndroidRuntime(4677):位于java.lang.reflect.Method.Invokenactive(本机方法)
10-2817:45:12.953:E/AndroidRuntime(4677):在java.lang.reflect.Method.invoke(Method.java:511)
10-28 17:45:12.953:E/AndroidRuntime(4677):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-28 17:45:12.953:E/AndroidRuntime(4677):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-28 17:45:12.953:E/AndroidRuntime(4677):在dalvik.system.NativeStart.main(本机方法)
10-28 17:45:12.953:E/AndroidRuntime(4677):由以下原因引起:java.lang.reflect.InvocationTargetException
10-28 17:45:12.953:E/AndroidRuntime(4677):位于java.lang.reflect.Method.Invokenactive(本机方法)
10-2817:45:12.953:E/AndroidRuntime(4677):在java.lang.reflect.Method.invoke(Method.java:511)
10-28 17:45:12.953:E/AndroidRuntime(4677):在android.view.view$1.onClick(view.java:3066)
10-2817:45:12.953:E/AndroidRuntime(4677):。。。还有11个
10-28 17:45:12.953:E/AndroidRuntime(4677):原因:java.lang.SecurityException:权限拒绝:读取com.android.providers.contacts.HtcContactsProvider2 uricontent://com.android.contacts/contacts 从pid=4677,uid=10155需要android.permission.READ\u联系人
10-28 17:45:12.953:E/AndroidRuntime(4677):在android.os.Parcel.readException(Parcel.java:1332)
10-28 17:45:12.953:E/AndroidRuntime(4677):在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182)
10-28 17:45:12.953:E/AndroidRuntime(4677):在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)
10-28 17:45:12.953:E/AndroidRuntime(4677):位于android.content.ContentProviderProxy.query(ContentProviderNative.java:406)
10-28 17:45:12.953:E/AndroidRuntime(4677):位于android.content.ContentResolver.query(ContentResolver.java:315)
10-28 17:45:12.953:E/AndroidRuntime(4677):在com.example.contactsabuout.MainActivity.doQuery(MainActivity.java:47)
10-2817:45:12.953:E/AndroidRuntime(4677):。。。14多

我正在尝试学习android。

在清单文件中添加以下权限


android.permission.READ\u CONTACTS

日志中的这一行:

原因:java.lang.SecurityException:权限拒绝:读取com.android.providers.contacts.HtcContactsProvider2 uricontent://com.android.contacts/contacts 从pid=4677,uid=10155需要android.permission.READ\u联系人

通知您需要添加:

<uses-permission android:name="android.permission.READ_CONTACTS" />

到你的舱单


将其添加到
元素中,与
相同:


在清单文件中的确切位置?谢谢你的回复。
<manifest>

    <uses-sdk />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <application />

</manifest>