以下代码适用于模拟器,但无法在Samsung Galaxy S III上运行.
final String[] projection = new String[] { ContactsContract.Profile.DISPLAY_NAME }; String name = null; final Uri dataUri = Uri.withAppendedPath(ContactsContract.Profile.CONTENT_URI, ContactsContract.Contacts.Data.CONTENT_DIRECTORY); final ContentResolver contentResolver = getContentResolver(); final Cursor c = contentResolver.query(dataUri, projection, null, null, null); try { if (c.moveToFirst()) { name = c.getString(c.getColumnIndex(ContactsContract.Profile.DISPLAY_NAME)); } } finally { c.close(); } System.out.println(name);
这是一个例外:
12-03 20:57:15.751: E/AndroidRuntime(28172): FATAL EXCEPTION: main 12-03 20:57:15.751: E/AndroidRuntime(28172): java.lang.RuntimeException: Unable to start activity ComponentInfo{ht.smca.flashligh/ht.smca.flashligh.MainActivity}: java.lang.NullPointerException 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.app.ActivityThread.access$600(ActivityThread.java:140) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.os.Handler.dispatchMessage(Handler.java:99) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.os.Looper.loop(Looper.java:137) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.app.ActivityThread.main(ActivityThread.java:4898) 12-03 20:57:15.751: E/AndroidRuntime(28172): at java.lang.reflect.Method.invokeNative(Native Method) 12-03 20:57:15.751: E/AndroidRuntime(28172): at java.lang.reflect.Method.invoke(Method.java:511) 12-03 20:57:15.751: E/AndroidRuntime(28172): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 12-03 20:57:15.751: E/AndroidRuntime(28172): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 12-03 20:57:15.751: E/AndroidRuntime(28172): at dalvik.system.NativeStart.main(Native Method) 12-03 20:57:15.751: E/AndroidRuntime(28172): Caused by: java.lang.NullPointerException 12-03 20:57:15.751: E/AndroidRuntime(28172): at com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:298) 12-03 20:57:15.751: E/AndroidRuntime(28172): at ht.smca.flashligh.MainActivity.onCreate(MainActivity.java:68) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.app.Activity.performCreate(Activity.java:5206) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083) 12-03 20:57:15.751: E/AndroidRuntime(28172): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 12-03 20:57:15.751: E/AndroidRuntime(28172): ... 11 more
有什么建议?我这样做是为了学习目的,即研讨会.
您有java空指针异常,因此name为null.将您的system.out.println()放入try中,您将不会遇到此错误.得到这个名字之后,我真的不知道 - Clad
不是我的帖子,但你的答案: 获取Android设备名称 (对于Android设备型号我的坏)
android.os.Build.MODEL;
这有两种方法:
如何在Android上获取Google用户名?
如何获得手机用户的名字(或全名)?
这将帮助您获取存储在设备上的所有者名称:
Cursor c = getApplication().getContentResolver().query(ContactsContract.Profile.CONTENT_URI, null, null, null, null); c.moveToFirst(); textView.setText(c.getString(c.getColumnIndex("display_name"))); c.close();
确保在清单中添加此权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>