私は最初にアンドロイドアプリを開発しています。ここでは、指定した番号に複数の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>
クラッシュのスタックトレースを送信します。 –
ただ、投稿されました。 –
すべてがあります:あなたのアプリケーションには許可がありませんandroid.permission.SEND_SMS –