2017-09-12 7 views
-3

App stürzt ab, wenn ich versuche, eine SMS aus meiner Anwendung zu senden. Ich habe eine App, die SMS onClick einer Schaltfläche sendet. Aber es stürzt mit einer NULL Pointer Exception ab.App stürzt beim Versuch ab, SMS zu senden

Ich denke, es hat etwas mit dem Kontext. Aber ich weiß nicht, wie ich es erreichen soll. Da ich neu bei Android bin, wird jede Hilfe geschätzt.

Logcat:

09-12 00:32:25.895 17629-17629/com.nitsystem E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.nitsystem, PID: 17629 
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
     at android.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:499) 
     at android.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:488) 
     at com.nitsystem.activity.MainActivity.sendSMS(MainActivity.java:208) 
     at com.nitsystem.activity.MainActivity$1.onClick(MainActivity.java:77) 
     at android.view.View.performClick(View.java:6213) 
     at android.widget.TextView.performClick(TextView.java:11074) 
     at android.view.View$PerformClick.run(View.java:23645) 
     at android.os.Handler.handleCallback(Handler.java:751) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:154) 
     at android.app.ActivityThread.main(ActivityThread.java:6692) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 

Code:

private static final String SMS_PHONE_NUMBER="sms"; 
public static long lastSMSsentAt = 0; 
public static String smsContent = "Hello World"; 
public static MainActivity ref= null; 

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
      msendSMS = (Button) findViewById(R.id.start_stop_detection); 

       msendSMS.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

          sendSMS(ref); 
         } 
       }); 
    } 

    public static void sendSMS(MainActivity context) { 
     SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); 
     String phoneNumber = sharedPref.getString(SMS_PHONE_NUMBER, ""); 
     long smsnow = System.currentTimeMillis(); 
     long diff = smsnow - lastSMSsentAt; 
     Log.d(TAG, "diff : " + diff); 
     Log.d(TAG, "pre: " + lastSMSsentAt + " now: " + smsnow); 
     if(diff> 30000){ 
      lastSMSsentAt = smsnow; 
      Calendar calendar = Calendar.getInstance(); 
      SimpleDateFormat simpledf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
      SmsManager sms = SmsManager.getDefault(); 
      String destinationAddress = phoneNumber; 
      String message = smsContent +"\n"; 
      message += "\nTest SMS time: " + simpledf.format(calendar.getTime()) + ""; 
      sms.sendTextMessage(destinationAddress, null, message, null,null); 
      Log.d(TAG,"sms sent"); 
     } 
    } 
} 
+1

schaffen Kontext wie diesem Kontext Kontext Folowing = this; und dann übergeben Sie den Kontext, wo erforderlich –

+2

MainActivity Ref, die Null in Ihrem Code ist pass MainActivity.this = ref – Vij

+0

Danke Jungs. Beide Lösungen haben funktioniert. Bin dankbar. –

Antwort

5

Versuchen

msendSMS.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

        sendSMS(yourActivity.this); 
       } 
     }); 
+0

Vielen Dank Amrutha. Es funktionierte. –

+0

können Sie sich bitte diese Frage ansehen. https://stackoverflow.com/questions/46193943/cannot-resolve-symbol-unable-to-add-location-data-to-exif-of-an-image –

+1

@NewCoder lassen Sie mich überprüfen. –

Verwandte Themen