SMS aus App verschicken klappt ab Android 4.4.2 nicht mehr

  • Antworten:4
Markus Graf
  • Forum-Beiträge: 12

17.03.2014, 15:20:41 via Website

Hi,
ich habe in meiner App zwei Buttons bei jedem Mitarbeiter. Einmal um ihn direkt anzurufen (klappt auch in jeder Androidversion) und einen um ihn eine SMS zu verschicken (klapp bis Android 4.3 und bei 4.4.2 nicht mehr).

Habe folgenden Code:
1import android.app.Activity;
2import android.content.Context;
3import android.content.Intent;
4import android.net.Uri;
5import android.os.Bundle;
6import android.telephony.PhoneStateListener;
7import android.telephony.TelephonyManager;
8import android.util.Log;
9import android.view.View;
10import android.view.View.OnClickListener;
11import android.widget.Button;
12import android.widget.Toast;
13
14public class TeamBerndK extends Activity implements OnClickListener {
15
16 final Context context = this;
17 private Button phonebtn, smsbtn;
18
19 @Override
20 protected void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.berndk);
23
24 phonebtn = (Button) findViewById(R.id.callberndk);
25 smsbtn = (Button) findViewById(R.id.smsberndk);
26
27 PhoneCallListener phoneCallListener = new PhoneCallListener();
28 TelephonyManager telManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
29 telManager.listen(phoneCallListener, PhoneStateListener.LISTEN_CALL_STATE);
30
31 // add button listener
32
33 phonebtn.setOnClickListener(new OnClickListener() {
34
35 @Override
36 public void onClick(View view) {
37
38 Intent phoneCallIntent = new Intent(Intent.ACTION_CALL);
39 phoneCallIntent.setData(Uri.parse("tel:0176*********"));
40 startActivity(phoneCallIntent);
41
42 }
43 });
44
45 smsbtn.setOnClickListener(new View.OnClickListener() {
46 public void onClick(View view) {
47 sendSMS();
48 }
49
50 private void sendSMS() {
51
52 Log.i("Send SMS", "");
53
54 Intent smsIntent = new Intent(Intent.ACTION_VIEW);
55 smsIntent.setData(Uri.parse("smsto:"));
56 smsIntent.setType("vnd.android-dir/mms-sms");
57
58 smsIntent.putExtra("address" , new String ("0176**********"));
59 try {
60 startActivity(smsIntent);
61 finish();
62 Log.i("Finished sending SMS...", "");
63 } catch (android.content.ActivityNotFoundException ex) {
64 Toast.makeText(TeamBerndK.this,
65 "SMS faild, please try again later.", Toast.LENGTH_SHORT).show();
66 }
67
68 }
69 });
70
71 }
72
73 @Override
74 public void onClick(View v) {
75 finish();
76 }
77
78 private class PhoneCallListener extends PhoneStateListener {
79
80 String TAG = "LOGGING PHONE CALL";
81 private boolean phoneCalling = false;
82
83 @Override
84 public void onCallStateChanged(int state, String incomingNumber) {
85
86 if (TelephonyManager.CALL_STATE_RINGING == state) {
87
88 // phone ringing
89 Log.i(TAG, "RINGING, number: " + incomingNumber);
90 }
91
92 if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
93
94 // active
95 Log.i(TAG, "OFFHOOK");
96
97 phoneCalling = true;
98 }
99
100 // When the call ends launch the main activity again
101 if (TelephonyManager.CALL_STATE_IDLE == state) {
102 Log.i(TAG, "IDLE");
103 if (phoneCalling) {
104 Log.i(TAG, "restart app");
105
106 // restart app
107 Intent i = getBaseContext().getPackageManager()
108 .getLaunchIntentForPackage(
109 getBaseContext().getPackageName());
110
111 i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
112 startActivity(i);
113
114 phoneCalling = false;
115 }
116 }
117 }
118 }
119}

Unter Android 4.2 oder älter funktioniert die SMS Funktion über einen Button ohne Probleme.
Bei einem Handy mit Android 4.4 bekomme ich die Toastmeldung: SMS faild, please try again later.

In der AndroidManifest.xml habe ich <uses-permission android:name="android.permission.SEND_SMS" /> drinnen stehen.


Kann mir da jemand weiter helfen?

— geändert am 17.03.2014, 15:35:05

Antworten
impjor
  • Forum-Beiträge: 1.793

17.03.2014, 17:15:24 via Website

Ich empfehle dir Exception immer auch im Log anzeigen zu lassen, mindestens durch ein e.printStackTrace();.

Zu deinem Problem: Sieh dir mal die offizielle Doku dafür an: http://developer.android.com/guide/components/intents-common.html#SendMessage . Du erstellst den Intent falsch.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Markus Graf
  • Forum-Beiträge: 12

19.03.2014, 13:44:05 via Website

Das Problem ist dass das Nexus von Google keine SMS App mehr hat sonder Hangouts benutzt für die SMS.
Ist eine SMS App installiert funktioniert alles ohne Probleme.
Mich würde es interessieren wie man den Code modifizieren müsste, das beim SMS-Versand Hangouts aufgeht.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.03.2014, 15:16:22 via App

Wenn aber jemand Hangouts aus egal welcuen gründen nicht hat?
Machs doch so wie impjor sagte.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Luigi
  • Forum-Beiträge: 2.282

19.03.2014, 16:22:41 via Website

Markus Graf
Das Problem ist dass das Nexus von Google keine SMS App mehr hat sonder Hangouts benutzt für die SMS.
Ist eine SMS App installiert funktioniert alles ohne Probleme.
Mich würde es interessieren wie man den Code modifizieren müsste, das beim SMS-Versand Hangouts aufgeht.

SMS versenden dürfen seit KitKat nur noch jene Apps, welche der User eigenständig als Standard definiert hat. Hier mal die nötigen Änderungen zusammengefasst:
http://android-developers.blogspot.de/2013/10/getting-your-sms-apps-ready-for-kitkat.html

Antworten