2014-11-12 1 views
0

아래 코드는 PRINCE 알고리즘을 사용하여 SMS를 암호화하는 데 사용되며 SMS를 수신기로 보냅니다. 현재 public void onClick(View v,String args)이 ""이라는 오류 메시지를 표시하는 문제에 직면했습니다. 새 View.OnClickListener() {} 유형의 메서드 onClick (View, String)이 절대로 로컬로 사용되지 않습니다. ". 나는 또한 The method onClick(View) from the type new Thread(){} is never used locally을 언급했지만, 주어진 해결책이 도움이되지 않습니다. 이 문제에 대한 다른 해결책이 있습니까?새로운 View.OnClickListener() {} 유형의 onClick (View, String) 메서드는 로컬에서 사용되지 않습니다.

btnSendSMS.setOnClickListener(new View.OnClickListener() 
    { 
    @Override 
    public void onClick(View v) { 
     String phoneNo = txtPhoneNo.getText().toString(); 
     String message = txtMessage.getText().toString(); 
     if (phoneNo.length()>0 && message.length()>0) 
     { 
       LongBuffer messageBuf = TooLong.messageToLongBuffer(message); 
       messageBuf.flip(); 
       long[] messageData = new long[messageBuf.remaining()]; 
       LongBuffer i = messageBuf.get(messageData); 
       String v1=prince.Encrypt(i, k0, kop, k1, t); 
       sendSMS(phoneNo, v1); 
      } 
      else 
       Toast.makeText(getBaseContext(), 
       "Please enter both phone number and message.", 
       Toast.LENGTH_SHORT).show(); 
    } 
    });   
    } 

//---sends a SMS message to another device--- 

    private void sendSMS(String phoneNumber, String v1) 
    {  
     /* 
     PendingIntent pi = PendingIntent.getActivity(this, 0, 
        new Intent(this, test.class), 0);     
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, pi, null);   
     */ 

     String SENT = "SMS_SENT"; 
     String DELIVERED = "SMS_DELIVERED"; 

     PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
       new Intent(SENT), 0); 

     PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, 
       new Intent(DELIVERED), 0); 


//---when the SMS has been sent--- 
     registerReceiver(new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
     switch (getResultCode()) 
     { 
      case Activity.RESULT_OK: 
      Toast.makeText(getBaseContext(), "SMS sent", 
       Toast.LENGTH_SHORT).show(); 
      break; 
      case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
      Toast.makeText(getBaseContext(), "Generic failure", 
       Toast.LENGTH_SHORT).show(); 
      break; 
      case SmsManager.RESULT_ERROR_NO_SERVICE: 
      Toast.makeText(getBaseContext(), "No service", 
       Toast.LENGTH_SHORT).show(); 
      break; 
      case SmsManager.RESULT_ERROR_NULL_PDU: 
      Toast.makeText(getBaseContext(), "Null PDU", 
       Toast.LENGTH_SHORT).show(); 
      break; 
      case SmsManager.RESULT_ERROR_RADIO_OFF: 
      Toast.makeText(getBaseContext(), "Radio off", 
       Toast.LENGTH_SHORT).show(); 
      break; 
     } 
     } 
    }, new IntentFilter(SENT)); 

//---when the SMS has been delivered--- 
    registerReceiver(new BroadcastReceiver(){ 
    @Override 
     public void onReceive(Context arg0, Intent arg1) { 
     switch (getResultCode()) 
     { 
      case Activity.RESULT_OK: 
      Toast.makeText(getBaseContext(), "SMS delivered", 
       Toast.LENGTH_SHORT).show(); 
      break; 
      case Activity.RESULT_CANCELED: 
      Toast.makeText(getBaseContext(), "SMS not delivered", 
       Toast.LENGTH_SHORT).show(); 
      break;   
     } 
     } 
      }, new IntentFilter(DELIVERED));   

      SmsManager sms = SmsManager.getDefault(); 
      sms.sendTextMessage(phoneNumber, null, v1, sentPI, deliveredPI);    
     }  
     } 
+0

여기서 ononclicklistener 부분은 layout.xml 파일에서 메소드를 지정하고 있습니다. – Piyush

+0

거기에 있거나 문제가 해결되었습니다. – Piyush

+0

@piyush, 질문을 이해할 수 없습니다. – Anon

답변

1

onClick() 메소드 서명은 onClick(View)하지 onClick(View,String)이다. 후자는 결코 호출되지 않고 OnClickListener 인터페이스의 메서드를 재정의하지 않는 새 메서드를 선언합니다.

메서드에서 String 인수를 제거하고 다른 스텁 onClick(View)을 제거하십시오.

+0

앱이 다운됩니다. – Anon

+0

다른 버그가 있습니다. http://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – laalto

0
public void `onClick(View v,String args)` 

이 방법은 사용자가 작성한 방법이므로 로컬로 사용되지 않습니다. OnButton을 클릭하면 메서드가 호출되지 않습니다. 클릭시 onClick(View) 메쏘드가 호출됩니다. 코드를 내부에 작성하십시오 onClick(View)

+0

시도하고 추락했습니다. 로그는 11-12 15 : 47 : 14.496 : E/AndroidRuntime (13396) : \t at dalvik.system.NativeStart.main (네이티브 메소드) – Anon

0
  btnSendSMS.setOnClickListener(new View.OnClickListener() 
      { 


    // why have you written this method it not called from anywhere remove this 
     method put code in public void onClick(View v) method 
       public void onClick(View v,String args) 
       { 

       } 
      @Override 
      public void onClick(View v) { 
       String phoneNo = txtPhoneNo.getText().toString(); 
       String message = txtMessage.getText().toString(); 
       if (phoneNo.length()>0 && message.length()>0) 
       { 
         LongBuffer messageBuf = TooLong.messageToLongBuffer(message); 
         messageBuf.flip(); 
         long[] messageData = new long[messageBuf.remaining()]; 
         LongBuffer i = messageBuf.get(messageData); 
         String v1=prince.Encrypt(i, k0, kop, k1, t); 
         sendSMS(phoneNo, v1); 
        } 
        else 
         Toast.makeText(getBaseContext(), 
         "Please enter both phone number and message.", 
         Toast.LENGTH_SHORT).show(); 
      } 
      });   
      } 


if you require this method (onClick(View v,String args))then comment. 
+0

로그 아웃과 로그 인한 응용 프로그램이 충돌 함 15-12 : 14.496 : E/AndroidRuntime (13396) : \t at dalvik.system.NativeStart.main (기본 방법) – Anon

+0

로그를 공유하십시오. – Piyush

+0

11-12 15 : 56 : 22.391 : E/MoreInfoHPW_ViewGroup (14309) : 부모보기가 TextView가 아닙니다. 11-12 15 : 56 : 22.471 : D/TextLayoutCache (14309) : 미얀마 Zawgyi 변환기 사용 11-12 15 : D/TextLayoutCache (14309) : 미얀마 Zawgyi 변환기 사용 11-12 15 : 56 : 22.476 : D/TextLayoutCache (14309) 14309) : 미얀마 Zawgyi 변환기 사용 가능 11-12 15 : 56 : 22.491 : D/libEGL (14309) :로드 됨 /system/lib/egl/libEGL_mali.so 11-12 15 : 56 : 22.496 : D/libEGL (14309)) :로드 됨 /system/lib/egl/libGLESv1_CM_mali.so – Anon

관련 문제