Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中获取设备的电话号码_Android - Fatal编程技术网

在android中获取设备的电话号码

在android中获取设备的电话号码,android,Android,嘿,伙计们,我正在用android studio获取我手机的电话号码 我已在清单文件中输入权限,即 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 但当我运行我的应用程序时,它崩溃了。我无法解决这个问题。 请帮帮我。谢谢 问题在于这句话 String m=tMgr.getLine1Number(); E/AndroidRuntime:致命异常:主 流程:com.example.umk.s

嘿,伙计们,我正在用android studio获取我手机的电话号码

我已在清单文件中输入权限,即

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
但当我运行我的应用程序时,它崩溃了。我无法解决这个问题。 请帮帮我。谢谢

问题在于这句话

String m=tMgr.getLine1Number();
E/AndroidRuntime:致命异常:主 流程:com.example.umk.stylefeedback,PID:32333 java.lang.RuntimeException:无法启动活动组件信息{com.example.umk.stylefeedback/com.example.umk.stylefeedback.NumberConfirmation}:java.lang.SecurityException:getLine1NumberForDisplay:用户10097和当前进程都没有android.permission.READ\u SMS。 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 位于android.app.ActivityThread.-wrap11(ActivityThread.java) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:148) 位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:java.lang.SecurityException:getLine1NumberForDisplay:用户10097和当前进程都没有android.permission.READ\u SMS。 在android.os.Parcel.readException(Parcel.java:1620) 位于android.os.Parcel.readException(Parcel.java:1573) 位于com.android.internal.telephony.ITelephony$Stub$Proxy.getLine1NumberForDisplay(ITelephony.java:3731) 在android.telephony.TelephonyManager.getLine1NumberForSubscriber(TelephonyManager.java:2101)中 位于android.telephony.TelephonyManager.getLine1Number(TelephonyManager.java:2079) 位于com.example.umk.stylefeedback.NumberConfirmation.onCreate(NumberConfirmation.java:35) 位于android.app.Activity.performCreate(Activity.java:6251) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 位于android.app.ActivityThread.-wrap11(ActivityThread.java) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)上 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:148) 位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Hello可以共享logcat

由于电话号码并非物理存储在所有SIM卡上,或从网络广播到手机,因此无法保证解决此问题。这在一些需要物理地址验证的国家尤其如此,数字分配只能在之后进行。电话号码分配在网络上进行,并且可以在不更改SIM卡或设备的情况下进行更改(例如,这就是支持移植的方式)


我知道这很痛苦,但最有可能的解决办法是让用户输入他/她的电话号码一次并存储

Hello可以共享logcat

没有瓜尔人
String m=tMgr.getLine1Number();
 public void fetchContacts() {
        ////Log.e("step ", "1");
        String phoneNumber, phonetype = null;

        Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
        String _ID = ContactsContract.Contacts._ID;
        String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
        String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER;
        Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
        String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;

        ContentResolver contentResolver = getContentResolver();
        Cursor cursor = contentResolver.query(CONTENT_URI, null, null, null, null);

        // Loop for every contact in the phone
        if (cursor.getCount() > 0) {

            while (cursor.moveToNext()) {
                String contact_id = cursor.getString(cursor.getColumnIndex(_ID));
                String name = cursor.getString(cursor.getColumnIndex(DISPLAY_NAME));

                int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex(HAS_PHONE_NUMBER)));
                if (hasPhoneNumber > 0) {
                    Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI, null, Phone_CONTACT_ID + " = ?"
                            , new String[]{contact_id}, DISPLAY_NAME);
                    while (phoneCursor.moveToNext()) {
                        phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
                        String string = phoneNumber.replaceAll("[^\\d]", "");
                        // String where2 = childJSONObject.getString("phone_number");
                        if (string.length() > 10)
                            string = string.substring(string.length() - 10);
                        JSONObject object = new JSONObject();
                        if (ValidationUtil.isValidMobileNumber(string)) {
                            if (string.length() > 2) {
                                try {
                                    object.put("name", helper.ConvertCamel(name));
                                    object.put("phone", Long.parseLong(string.trim()));
                                    objects.add(object);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                    phoneCursor.close();
                }
            }
            cursor.close();
        }
    }
}