Не найдено действий для обработки Intent {act = android.settings.LOCALE_SETTINGS} - PullRequest
2 голосов
/ 10 октября 2019

Я создаю код, который проверяет текущее местоположение, однако при проверке текущего местоположения происходит сбой. Я посмотрел в Stack Trace и увидел это. Я читаю другие форумы, но я не знаком с их решениями. Я также новичок в Java. Я использовал планшет Amazon Fire для загрузки этого приложения. Когда я пытался протестировать его на эмуляторе, приложение не зависало.

 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.LOCALE_SETTINGS }
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1797)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1517)
        at android.app.Activity.startActivityForResult(Activity.java:3761)
        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
        at android.app.Activity.startActivityForResult(Activity.java:3722)
        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
        at android.app.Activity.startActivity(Activity.java:4032)
        at android.app.Activity.startActivity(Activity.java:4000)
        at com.example.calculatorandlocationfinderfinal.MainActivity$7.onClick(MainActivity.java:181)
        at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5491)
        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:984)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

Ниже приведен код, где это произошло.

private void onGPS() {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Enable GPS").setCancelable(false).setPositiveButton("YES", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            startActivity(new Intent(Settings.ACTION_LOCALE_SETTINGS));
        }
    }).setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });
    final AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

Ответы [ 3 ]

0 голосов
/ 10 октября 2019

Всегда используйте этот метод для запуска намерений, отличных от целей вашего приложения -

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
if(intent.resolveActivity(context.getPackageManager()) != null){
    startActivity(intent);
}else{
    //handle activity not found
}

таким образом, вы не получите ActivityNotFoundException.

Вы также можете использовать try catch как -

try {
       startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
    } catch (e: ActivityNotFoundException) {
       //handle activity not found
    }
0 голосов
/ 10 октября 2019
Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //This line solve my issue
startActivity(viewIntent);
0 голосов
/ 10 октября 2019

Полагаю, вы хотите перейти к экрану настроек GPS. попробуйте это.

startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

Возможно, на телефоне / устройстве отсутствует экран настроек локали, что приводит к сбою.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...