2016-06-27 23 views
0

私は最初にアンドロイドアプリを開発しています。ここでは、指定した番号に複数のSMSを送信できます。コードに既にプログラムされたメッセージの数と数が送られてきたときに、アプリは正常に動作していました。しかし、送信する宛先番号とメッセージ数を入力し、そのデータをインテントを通して最初のアクティビティに転送できる別のアクティビティを作成しました。しかし、今、メッセージを送信しようとするとアプリケーションがクラッシュします。あなたは私がするとき、アプリケーションがクラッシュした、文字列numとint型のxと一緒に送信されるメッセージの数を所定数に置き換えている見ることができるようにアプリがsendTextメソッドでクラッシュする

public class TextMessages extends AppCompatActivity { 
public static final String DEFAULT = "No Number Found"; 
private EditText customMessage; 
String gotNum; 
FloatingActionButton button; 
int request_code; 
String realnum; 
int temp; 
int recode; 
Button butt; 
int number; 
String num; 
String text; 
int x; 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_text_messages); 
    request_code = 1; 

    FloatingActionButton button = (FloatingActionButton) findViewById(R.id.but); 

    assert button != null; 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent intent = new Intent(TextMessages.this,Settings.class); 
      startActivityForResult(intent, request_code); 

      Intent a = new Intent(TextMessages.this,Settings.class); 
      startActivityForResult(a, recode); 

     } 
    }); 






    customMessage = (EditText)findViewById(R.id.customMessage); 

} 


public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if (requestCode== request_code){ 
     if (resultCode== Activity.RESULT_OK){ 
      num = data.getStringExtra("value"); 
      text = data.getStringExtra("cost"); 
     } 

    } 

} 


public void sendText(View view) 
{ 
    String message = ""; 
    if (view.getId() == R.id.fab) 
    { 
     message = customMessage.getText().toString(); 
    } 
    else 
    { 
     Button sender = (Button)view; 
     message = sender.getText().toString(); 
    } 
    //Toast.makeText(this, "Test", Toast.LENGTH_SHORT).show(); 

    int i; 
    x = Integer.parseInt(text); 
    for (i = 0; i < x; i++){ 
     SmsManager smsManager = SmsManager.getDefault(); 
     smsManager.sendTextMessage(num, null, message, null, null); 


    } 

}} 

:ここ

は最初の活動ですボタンを押してメッセージを送信します。第二の活性にデータを入力する場合にも、私は、追加してもよい

public class Settings extends AppCompatActivity { 
public EditText phoneNum; 
public Button apply; 
public EditText msgCounter; 
public Button save; 
int msgCount; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 

    phoneNum = (EditText)findViewById(R.id.phoneNum); 
    msgCounter = (EditText)findViewById(R.id.msgCount); 
    apply = (Button)findViewById(R.id.butto); 
    save = (Button)findViewById(R.id.butt); 



    save.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent pass = new Intent(); 
      pass.putExtra("value", phoneNum.getText().toString()); 
      pass.putExtra("cost",msgCounter.getText().toString()); 
      setResult(Activity.RESULT_OK,pass); 
      finish(); 
     } 
    }); 


} 
public void OnButtonClickedApply(View view) 

{ 
    String num; 
    num = phoneNum.getText().toString(); 


    //Toast.makeText(this, num, Toast.LENGTH_SHORT).show(); 

} 
public void saveMsg(View view) 
    { 
    msgCount = Integer.parseInt(msgCounter.getText().toString()); 
    } 

} 

:ここ

番号とメッセージが送信される活性がから収集されます。データを保存するためにボタンを押すと、アクティビティがリセットされ(リロード?)、データを2回目に置く必要があります。ボタンを押すと、最初のアクティビティに戻ります。

クラッシュログ:

06-27 19:14:55.583 2404-2404/com.linfirmware.emergencytext E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.linfirmware.emergencytext, PID: 2404 
                     java.lang.IllegalStateException: Could not execute method for android:onClick 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
                      at android.view.View.performClick(View.java:5198) 
                      at android.view.View$PerformClick.run(View.java:21147) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5417) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                      Caused by: java.lang.reflect.InvocationTargetException 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                      at android.view.View.performClick(View.java:5198)  
                      at android.view.View$PerformClick.run(View.java:21147)  
                      at android.os.Handler.handleCallback(Handler.java:739)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:148)  
                      at android.app.ActivityThread.main(ActivityThread.java:5417)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
                      Caused by: java.lang.SecurityException: Sending SMS message: uid 10057 does not have android.permission.SEND_SMS. 
                      at android.os.Parcel.readException(Parcel.java:1599) 
                      at android.os.Parcel.readException(Parcel.java:1552) 
                      at com.android.internal.telephony.ISms$Stub$Proxy.sendTextForSubscriber(ISms.java:768) 
                      at android.telephony.SmsManager.sendTextMessageInternal(SmsManager.java:310) 
                      at android.telephony.SmsManager.sendTextMessage(SmsManager.java:293) 
                      at com.example.rahul.customtext.TextMessages.sendText(TextMessages.java:94) 
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
                      at android.view.View.performClick(View.java:5198)  
                      at android.view.View$PerformClick.run(View.java:21147)  
                      at android.os.Handler.handleCallback(Handler.java:739)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:148)  
                      at android.app.ActivityThread.main(ActivityThread.java:5417)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
06-27 19:14:57.765 2404-2404/com.linfirmware.emergencytext I/Process: Sending signal. PID: 2404 SIG: 9 

マニフェストファイル:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.rahul.customtext"> 

<uses-permission android:name="android.permission.SEND_SMS" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".TextMessages"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".Settings" 
     android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 
+1

クラッシュのスタックトレースを送信します。 –

+0

ただ、投稿されました。 –

+0

すべてがあります:あなたのアプリケーションには許可がありませんandroid.permission.SEND_SMS –

答えて

0

あなたはアンドロイドMを使用している場合SEND_SMS許可がオフにされていたであろうことがあるかもしれません。使用しているエミュレータまたはデバイス上のアプリケーションに与えられている権限を確認してください。

関連する問題