0

인 텐트의 ArrayList가 있습니다. 특정 위치의 인 텐트에 활동, 서비스 또는 아무것도 포함되어 있지 않은지 어떻게 확인할 수 있습니까?인 텐트가 활동 또는 서비스인지 확인하거나 없음

Intent intent = intents.get(id); 
context.startActivityForResult(intent,1); 

당신은 어떻게 인덱스 ID의 의도도 제대로 활동 수업에 중점을두고있다 startActivityForResult를 통과 할 수 있는지 확인합니다.

답변

2

글쎄 그것은 우아한 해결책은 아니지만이 같은 의도의 클래스 이름을 얻기 위해 시도 할 수 있습니다 :

Intent it = new Intent(ctx, AnotherActivity.class); 
it.getComponent().getClassName() // output com.package.app.MainActivity 

Intent it = new Intent(ctx, JustService.class); 
it.getComponent().getClassName() // output com.package.app.JustService 

하고

switch (...getClassName()) { 
    case 'com.package.app.JustService' { 
     //todo 
    } 
} 

당신은 getShortClassName() 메소드를 사용하여 사용하고 출력 것이다 기본 패키지가없는 클래스 이름 :

.JustService 

null 인 경우 null인지 확인합니다.

+0

활동 및 서비스가 아닌 경우 Component가 null인지 확인하기로 결정했습니다. – CQM

1

주어진 위치의 의도가 활동, 서비스 또는 아무것도 포함하고 있지 않은지 어떻게 확인할 수 있습니까?

나는 이것을 "어떻게 Intent이 해결할 수있는 구성 요소를 볼 수 있습니까?"라고 해석 할 것입니다.

그렇다면 PackageManagerqueryIntentActivities(), queryIntentServices()queryBroadcastReceivers()을 사용하십시오. Intent은 그 중 일부 또는 전부에 사용할 수 있습니다.

가 어떻게 인덱스 ID의 의도조차 제대로에 startActivityForResult를 통해 전달 될 수 있음을 확인 할

당신이하지, 활동을 쓴 개발자를 찾아 봐 "를 묻는 짧은는 것이다 이것은 결과를 반환합니까? " 잘 알려진 결과를 반환하는 작업 문자열 (예 : ACTION_PICK, ACTION_GET_CONTENT, ACTION_OPEN_DOCUMENT)을 허용 목록에 추가 할 수는 있지만 임의의 활동이 주어진 Intent에 대한 결과를 반환하는지 여부를 알 수있는 방법이 없습니다.

+0

활동 및 서비스가 아닌 경우 구성 요소가 null인지 확인하기로 결정했습니다. – CQM

+0

@CQM : '의도'가 어디서 왔는지 모르겠지만 '의도'에는 여전히 '구성 요소 이름'이 없어야합니다 유효하다. '새로운 인 텐트 (Intent.ACTION_VIEW) .setDataAndType (...)'은'ComponentName'을 갖지 않지만 여전히 활동으로 해석 할 수 있습니다. – CommonsWare

+0

감사합니다. 매우 통찰력이있었습니다. 내 유스 케이스가 범위가 확대되고 결함이 도입되면이를 명심해야한다. – CQM