2011-08-01 4 views
0

확인 버튼을 선택하면 세 번째 부분 앱을 시작하려고합니다. 다음 코드가 있지만 함께 오지는 않습니다. 나는 이것에 초심자이고 그것을 확실히 파악할 수 없다.세 번째 부분 앱 실행

 public class Abc extends Activity { 

static final String MARKET_SEARCH_Q_PNAME_ANDRIOS = "market://search?q=pname:com.3rdparty.app"; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.getpft); 
    setTitle("Install 3rd party app?"); 

    ((Button) findViewById(R.id.Ok)).setOnClickListener(new Openabc()); 
    ((Button) findViewById(R.id.FindIt)).setOnClickListener(new FindZxingOnclickListener()); 
} 


public class Openabc implements OnClickListener { 
    public void onClick(View v) { 
     Intent i = new Intent("android.intent.action.MAIN"); 
     i.addCategory("android.intent.category.LAUNCHER"); 
     i.setPackage("com.3rdparty.app"); 
     startActivity(i); 
    }} 


public class FindZxingOnclickListener implements OnClickListener { 
    public void onClick(View v) { 
     Intent marketLaunch = new Intent(Intent.ACTION_VIEW); 
     marketLaunch.setData(Uri.parse(MARKET_SEARCH_Q_PNAME_ANDRIOS)); 
     startActivity(marketLaunch); 
    }} 

} 나는 잠시 동안 안드로이드를 수행하지만, 신속하게 문서를 통해보고, 나는이를 생각하고하는 것은 문제가되지 않은

+0

, 당신은'만약 startActivity (의도)를'전화하는거야, 대한 this을. – parkovski

답변

1

:

클래스가 실제로하지 않을

Android 클래스의 (상속 또는 구성을 통해) 사용하지 않기 때문에 모든 작업을 수행하십시오. Intent을 생성하면 빈 메소드가 호출되므로 아무 일도 일어나지 않습니다. 이 작업을 수행하는 가장 쉬운 방법은 private void startActivity(Intent i)의 정의를 삭제하고 다른 내용을 Activity 클래스로 옮기는 것입니다. 필요한 경우 해당 클래스에 OnClickListener을 구현 한 다음 startActivity 메서드를 호출하십시오.

+0

parkovski, 나는 이것이 더 합리적인 방법을 이해합니다. 내 의도를 기본 활동 클래스로 옮겼으며 OK 버튼을 선택하면 실행해야합니다. 그러나 그 의도는 그 자체가 강제되기 때문에 놓쳐 야합니다. 어떤 아이디어? 이것은 실제로 큰 그림의 일부입니다. 즉, 3 부 앱이 설치되어 있는지 확인하도록 클래스에 요청합니다. 그렇지 않은 경우 시장을 검색하고 설치합니다. 이후에이 페이지로 이동하면 해당 앱이 자동으로 열리 길 바랍니다. 내 의도에서 올바른 패키지 이름을 사용하고있어 약간 잃어 버렸습니다. 감사합니다 – Jim

2

요컨대, 의도를 올바르게 작성하고 있지 않습니다.

Here은 의도를 통해 다른 활동을 시작하는 예입니다. 특별한주의를 기울이는 것은 그들이 의도를 만드는 방식입니다.

난 정말 당신이 여기에 맞추려고하지만있는 의도의 특성을 모른 채 도울 수

링크의 고기 : 뭔가를 찾기 위해 안드로이드를 말해주지

Intent intent = new Intent("com.3rdpartydev.abcapp.GO"); 
    intent.setPackage("com.3rdpartydev.abcapp"); 
    startActivity(intent); 

그 com.3rdpartydev.abcapp.GO 요청을 처리하는 방법을 알고 있으며 요청을 찾을 수 있으면 시작합니다.

나는 좋을 것 다시 읽는 아무것도하지 않는다 자세한 내용은 당신이 의도를 만든 후에

+0

"설치되어 있지 않은 경우"를 처리하려면 try/catch 블록에서 startActivity에 대한 호출을 래핑하고 응용 프로그램이 없을 때 발생하는 예외를 catch하면 시장을 시작해야합니다 설치하려는 특정 앱을 검색 할 수 있습니다. 이걸로 아무데도 못 가면 오늘 저녁에 코드를 더 게시 할 수 있습니다. – Travis

+0

환상적인 예를 제시 할 수 있다면 잔디밭을 만드십시오. 당신이 저에게 제공 한 것은 훌륭했습니다. 나는 그것을 모두 맞추는 방법을 찾아 낼 것입니다. – Jim

+0

공유 할 수있는 문서가 있습니까? 아마도 당신이하려는 일을 본다면 당신에게 더 나은 대답을 줄 수 있습니다. – Travis

관련 문제