2012-05-24 2 views
0

나는이 간단한 앱을 작성하여 ms 단위로 처리기 지연을 기준으로 전화를 겁니다. 그러나 어떤 이유로 단추가 onClick 이벤트를 통해 public void callme(View view) 동작 할 때 응용 프로그램이 중단됩니다.Intent.ACTION_CALL 충돌 앱

나는 뭔가, 아마도 누군가가 내 오류를 지적 할 수 간단 확신합니다. 감사합니다

import android.app.Activity; 
    import android.content.Intent; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.os.Handler; 
    import android.view.View; 
    import android.widget.EditText; 

    public class CallButtonActivity extends Activity { 


     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      } 


    public void callme(View view) { 

     EditText edit_seconds = (EditText)findViewById(R.id.seconds); 
     CharSequence edit_seconds_value = edit_seconds.getText(); 

     int mSeconds = Integer.parseInt(edit_seconds_value.toString()); 

     Handler myHandler = new Handler(); 
     myHandler.postDelayed(mMyRunnable, mSeconds); 


    } 

    private Runnable mMyRunnable = new Runnable() 
    { 
     public void run() 
     { 

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

      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:" + msisdn)); 
      startActivity(callIntent); 
     } 
     }; 


    } 
+1

스택 추적을 볼 수 있도록 logcat 출력을 게시하십시오. –

+0

에뮬레이터에서 실행하지 않습니다. 휴대 전화의 APK 만 제공하므로이 기능을 제공 할 수 없습니다. – Rhys

+0

@Rhys : ** 휴대 전화의 APK 만 에뮬레이터로 실행하지 않으므로 제공 할 수 없습니다. ** 휴대 전화를 컴퓨터에 연결하고 DDMS를 사용하여 logcat을 모니터링하십시오. 그 중 하나 또는 logcat 응용 프로그램을 설치하십시오. Android 앱을 디버깅 할 때 logcat 출력을 볼 수 없다면 불필요한 고통을 줄 수 있습니다. – Squonk

답변

1

...

int mSeconds = Integer.parseInt(time.toString()); 

그것은 time.getText().toString()해야한다. (AN EditText에)과 단지 getText()Editable 아닌 String을 반환 - 당신은 또한 전화 번호를 getText().toString()를 사용해야합니다.

findViewById(...)Runnable과 함께 사용하는 것이 맞을지 모르지만 잘 모르겠습니다.

+0

당신은 매우 가까웠습니다. 방금 작업 했어. – Rhys

+0

CharSequence edit_seconds_value = edit_seconds.getText(); int mSeconds = Integer.parseInt (edit_seconds_value.toString()); 대답은 – Rhys

1

나는 안드로이드 매니페스트를 보지 않고 확실히 말할 수 있지만, 당신이 바로 그 권한의 AndroidManifest.xml에 추가되어 있는지 확인 할 수 없습니다. 특히,이 태그는 응용 프로그램 태그를 추가해야합니다

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 
+0

고마워요,하지만 이미 매니페스트 파일에 있습니다. – Rhys

1

당신이 매니페스트이 필요한 권한을 추가 했습니까? 그게 문제가 아니라면

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

, 일부 로그를 공유 할 수 있을까?

1

당신은 uri.parsemsisdn을 전달하고 있습니다. 이것은 EditText입니다! toString 메서드가 호출되지만 파서에 전화 번호를 전달하지 않고 EditText 객체의 식별자를 전달합니다.

사용으로

ACTION_CALL 더 검증 및 단지 충돌 응용 프로그램이 없을 수 있습니다. 이 작업을해야 생각이 라인에서

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

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setData(Uri.parse("tel:" + msisdn.getText())); 
startActivity(callIntent); 
+0

좋은 점을 발견했지만 문제가 해결되지 않았습니다. – Rhys

관련 문제