2016-09-05 4 views
3

응용 프로그램에서 전자 메일 응용 프로그램을 열려고하는데 오류가 발생했습니다.목록보기의 내 응용 프로그램에서 전자 메일 응용 프로그램을 엽니 다.

Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. 

문제는 FLAG_ACTIVITY_NEW_TASK입니다. 나는 또한 시도하고있어 에 addFlags

이 내 코드입니다 :

private void mailTo(String mail) { 
    Intent i = new Intent(Intent.ACTION_SEND).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    i.setType("message/rfc822"); 
    i.putExtra(Intent.EXTRA_EMAIL , new String[]{mail}); 
    try { 
      context.startActivity(Intent.createChooser(i, "")); 
} catch (ActivityNotFoundException ex) { 
     Toast.makeText(context, ex.getMessage(), Toast.LENGTH_LONG).show(); 
    } 
} 

나는 점에 유의해야합니다 같은 클래스에 좀 더 의도 작업을 작업했다.

private void callTo(String number) { 
    Intent callIntent = new Intent(Intent.ACTION_CALL).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    callIntent.setData(Uri.parse("tel:" + number)); 
    context.startActivity(callIntent); 
} 

그리고 :

private void smsTo(String phoneNumber) { 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber)).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(intent); 
} 
+0

내가 통해 UR 게시물을보기 전에 내가 다른 PLAC에서 그 답을 찾을 e, – Shachar87

답변

0

누군가가 Intent.createChooser이 플래그를 대처하지 않는 나에게 말했다.

따라서 다음을 수행해야합니다. 의도 tmp = Intent.createChooser ... 그리고 tmp에 플래그를 다시 설정하십시오.

나는 대체 :

Intent tmp = Intent.createChooser(i, "").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(tmp); 

제거 :

context.startActivity(Intent.createChooser(i, "")); 

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
1

당신이 context() 객체에서 점점없이 startActivity()를 호출하려고 했습니까? context()에는 응용 프로그램의 현재 상태가 있으므로 의도를 어디에서 시작하는지 확신 할 수 없습니다. 그래서는 다음과 같습니다

Intent i = new Intent(Intent.ACTION_SEND); 

편집

당신이 MainActivity() 아닌 Activity()에서 intent()를 호출하기 때문에, 통과하려고

startActivity(Intent.createChooser(i, "")); 

그리고 그와

이 플래그를 제거 클래스의 생성자에 대한 context() 매개 변수 다음
Context context; 

public MyAdapaterClass(Context context) { 
this.context=context; 
} 

그리고

이 같은 intent()을 시작 :

Intent i = new Intent(context, MainActivity.class); 
+0

나는 당신의 대답을 이해하지 못한다. 이 클래스는 BaseAdapter에서 확장되므로 부모로부터 얻을 수있는 컨텍스트가됩니다. – Shachar87

+0

어쨌든 MainActivity 클래스에서 Intent를 호출했다는 것을 알았습니다. 변경 사항을 게시 할 것입니다. –

+0

내가 말했듯이 나는 이미 문맥을 알아 내지 못했다.의도 exmple에 대해, 그게 내가 필요로하지. Intent.ACTION_SEND에 Intent가 필요합니다. – Shachar87

관련 문제