Markus Graf
- Forum-Beiträge: 12
17.03.2014, 15:20:41 via Website
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:
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?
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}
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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.