Android Handynummerprüfung

Ministalker

Grünschnabel
Ich möchte einen Messenger entwickeln.
Dummerweise habe ich nur ein einziges Problem.
Und zwar läuft der Messenger bis jetzt sehr gut nur die Prüfung ob die eingegebene Handynummer auch stimmt funktioniert nicht so ganz.

Da ich ich keine zuverlässige Quelle habe von der ich die Handynummer des aktuellen Smartphones bekomme, habe ich mir gedacht eine SMS Prüfung durchzuführen.
Die SMS mit dem Inhalt kann ich versenden aber leider wird weder eine Nachricht von der SMS App sichtbar noch reagiert meine App.

Wenn ich aber die SMS App öffne sehe ich die SMS.
Deshalb wollte ich Fragen ob jemand vielleicht eine bessere Möglichkeit hat die Nummer zu prüfen oder eventuell einen Programmcode ausschnitt geben könnte.

Momentan reagiert die App darauf ob die SMS versendet wurde oder nicht und das funktioniert.

Code:
sManager manager = SmsManager.getDefault();
                    SMSMessage = "123456";
                    manager.sendTextMessage(new String(ExchangeService.YPhone), null, SMSMessage, piSent, null);
 
Diese Funktion überprüft nur, ob die Telefonnummber rein vom Format her gültig ist (siehe PhoneNumberUtils.java#L1000-1007 auf GitHub). @Ministalker möchte aber prüfen, ob die Nummer wirklich zu dem Handy gehört, auf dem der Account aktiviert werden soll. Sonst könnte ich eine X-beliebige Nummer eingeben.
Oh habe mich dann verlesen.
Bin mir zwar nicht ganz so sicher aber versuch's mal mit

isVoiceMailNumber("01583..");
 
Oh habe mich dann verlesen.
Bin mir zwar nicht ganz so sicher aber versuch's mal mit

isVoiceMailNumber("01583..");

Da gibt es ein Problem. Und zwar haben nicht alle Sim Karten die Nummer abgespeichert bzw nicht die echte Nummer, da der Nutzer die ändern kann.(So wie ich verstanden habe prüft diese Funktion isVoiceMailNumber("01583.."); das über die Nummer, die auf der SIm gespeichert wurde.)(Alle deutschen Sim Karten haben keine Nummer abgespeichert da dies von den Anbietern aus dateschutzrechten nicht wollen.)
Ich möchte das falls der Nutzer eine falsche Nummer ausersehen eingegeben hat, soll dies von der APP erkannt werden und der Nutzer soll darauf hingewiesen werden, so das dieser seine eingame nochmal prüfen kann. Whatsapp macht das mit einer SMS-Prüfung, wobei die auf die vom Nutzer angegebene Nummer eine SMS verschickt mit einem Code, der dann geprüft wird.

PS. wie kann ich ein Kommentar erstellen?
 
PS. wie kann ich ein Kommentar erstellen?
Was für ein Kommentar?

Das Abfangen einer SMS ist schon der richtige Ansatz. So wie ich aus deinem Anfangsbeitrag herauslesen konnte, kann deine App die SMS nicht abfangen. Hast du die richtigen Android Permissions gesetzt? Kann es sein, dass deine App noch einen Broadcast Receiver für die SMS braucht?
 
SMS receive permission habe ich und auch einen broadcaster der in der manifest Datei registriert ist. Nur er wird nie aufgerufen auch wenn ich die Priorität hoch stelle. Ich nutze Android 5.0 für den test. Kann es sein das dort nur eine APP berechtigt ist SMS Nachrichten zu erhalten?

Das mit den Kommentaren ... Das ist jetzt egal. Denn ich habe mich da etwas verwechselt. Denn auf einer Seite darf man nur eine Frage stellen und dann die antworten kommentieren. Aber das ist ja hier nicht so, oder?
 
Kannst du den Code deines Broadcast-Receivers und deines Manifests hier reinstellen?

Am besten mal mit dem Code hier abgleichen: http://stackoverflow.com/q/1973071/603003 (siehe auch Antwort)

PS: Hier herrscht noch das alte Forum im Gegensatz zu der Seite StackOverflow, auf die du wahrscheinlich anspieltest. ;)
 
Ich habe etwas rumexperemetiert...
Deshalb kann es sein das da was nicht mehr so ganz passt. :D

Code:
public class SMSReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();
        SmsMessage[] msgs = null;
        String messageReceived = "";

        if (bundle != null) {
            //---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];
            for (int i = 0; i < msgs.length; i++) {
                msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                messageReceived += msgs[i].getMessageBody().toString();
                messageReceived += "\n";
            }


            //---display the new SMS message---
            Toast.makeText(context, messageReceived, Toast.LENGTH_SHORT).show();

            // Get the Sender Phone Number

            String senderPhoneNumber = msgs[0].getOriginatingAddress();
        }
    }
}

und hier die Manifest...

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

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="20" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    <permission
        android:name="pandaloper.de.swift.gcm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="pandaloper.de.swift.gcm.permission.C2D_MESSAGE" />

    <android:uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
    <android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:name=".Swift"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <receiver
            android:name=".services.MSGReceiver"
            android:permission="com.google.android.c2dm.permission.SEND"
            android:enabled="true"
            android:exported="true"
            android:priority="999" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />

                <category android:name="pandaloper.de.swift" />
            </intent-filter>
        </receiver>
        <receiver
            android:name=".services.SMSReceiver"
            android:enabled="true">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

        <service android:name=".services.NetworkService" />
        <service android:name=".services.DatabaseService" />
        <service android:name=".services.WorkerService" />

        <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>
        <activity
            android:name=".ChatActivity"
            android:label="@string/title_activity_chat" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="pandaloper.de.swift.MainActivity" />
        </activity>
        <activity
            android:name=".AddChatActivity"
            android:label="@string/title_activity_choose_a_contact" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="pandaloper.de.swift.MainActivity" />
        </activity>
        <activity
            android:name=".ChoosePictureActivity"
            android:label="@string/title_activity_choose_picture" >
        </activity>
        <activity
            android:name=".settings.ChatSettingsActivity"
            android:label="@string/title_activity_chat_settings" >
        </activity>
        <activity android:name=".CreateGroupActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="pandaloper.de.swift.MainActivity" />
        </activity>
        <activity
            android:name=".RegisterActivity"
            android:label="@string/app_name" >
        </activity>
    </application>

</manifest>
 
Zurück