0

Когда я разрабатываю приложение для Android. Я хочу назвать число программно. При использованииНачальная активность Android показывает ошибку

Uri number = Uri.parse("tel:123456789"); 
Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 
getContext().startActivity(callIntent); 

Показаны ошибки. Я использую FrameLayout вместо Activity.

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 
at android.app.ContextImpl.startActivity(ContextImpl.java:1366) 
at android.app.ContextImpl.startActivity(ContextImpl.java:1353) 
at android.content.ContextWrapper.startActivity(ContextWrapper.java:322) 
at com.happiness.lockscreenlibrary.view.LockView$1.onDrag(LockView.java:163) 
at android.view.View.dispatchDragEvent(View.java:18339) 
at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1492) 
at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1478) 
at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1478) 
at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:5143) 
at android.view.ViewRootImpl.access$700(ViewRootImpl.java:108) 
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3331) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5312) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 

Я использовал context.getApplicationContext().startActivity(callIntent); или context.startActivity(callIntent); вместо getContext().startActivity(callIntent); Но он показывает ту же ошибку. Как это решит, пожалуйста, помогите мне.

+1

'Вызов startActivity() из-за пределов контекста деятельности требует FLAG_ACTIVITY_NEW_TASK flag.' –

ответ

2

Чтобы начать свою деятельность со службы или за исключением другой деятельности, вы должны добавить флаг FLAG_ACTIVITY_NEW_TASK в намерение.

Uri number = Uri.parse("tel:123456789"); 
Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 
callIntent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getContext().startActivity(callIntent); 
0

Попробуйте добавить флаг вашего намерения:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

Ваш код будет

Uri number = Uri.parse("tel:123456789"); 
Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getContext().startActivity(callIntent); 

Надежда поможет вам!

2

Вы должны добавить setFlags (Intent.FLAG_ACTIVITY_NEW_TASK)

Если установлено, эта деятельность станет началом новой задачи на этой истории стека.

Uri number = Uri.parse("tel:123456789"); 
Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getContext().startActivity(callIntent); 
1
Uri number = Uri.parse("tel:123456789"); 
Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 
callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(callIntent); 
// use getActivity().startActivity(callIntent); if you are inside a fragment 

Вы можете получить информацию о намерениях флагов здесь:

https://developer.android.com/reference/android/content/Intent.html

FLAG_ACTIVITY_NEW_TASK Если установлено, эта деятельность станет началом новой задачи по этой истории стек.

0

Вы должны передать контекст из активности, чтобы просмотреть с помощью конструктора.

new LockView(this); 

используйте этот контекст, чтобы начать свою новую деятельность.

Uri number = Uri.parse("tel:123456789"); 
    Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 
    callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(callIntent); 

Добавить Intent.FLAG_ACTIVITY_NEW_TASK чтобы начать новую деятельность.

1

звоните startActivity с FLAG_ACTIVITY_NEW_TASK. LogCat указывает ошибку, и вы по-прежнему размещать его на SO

Uri number = Uri.parse("tel:123456789"); 
Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 
callIntent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getContext().startActivity(callIntent); 

 Смежные вопросы

  • Нет связанных вопросов^_^