Я относительно новичок в программировании на Android.На работе мне дали задание, в котором мне нужно было создать средство запуска действий Custom Home.Я провел небольшое исследование и нашел пример на сайте разработчика Android ( home sample ).Это было начало для моего прототипа.
Для пользовательской операции Home необходимо потребовать от пользователя аутентификации (введите несколько простых учетных данных).Я думал о том, чтобы запустить вспомогательное действие из домашнего действия и передать результаты в намерении домашнему действию.Мне нужно иметь возможность собирать информацию об этих полномочиях, и эта информация должна была быть передана обратно в домашнюю деятельность.Тем не менее, у меня есть проблемы при попытке этого.Я получаю журнал в LogCat, который говорит следующее: «Активность запускается как новая задача, поэтому отмена результата активности.»
Мне известен метод startActivityForResult, но, похоже, он не работает длямне.Вот где я запускаю действие из своей Домашней активности:
@Override
protected void onResume() {
super.onResume();
bindRecents();
Intent iii = new Intent(this, Login.class);
startActivityForResult(iii, STATIC_LOGIN_INTEGER_VALUE);
}
Когда этот код выполняется, я получаю вышеупомянутый журнал из тега ActivityManager.
Моя активность входа имеет кнопку, котораяпользователь нажмет, как только они введут свои учетные данные.Если учетные данные хороши, я пытаюсь сделать следующее (я поместил несколько журналов, чтобы попытаться выяснить, что происходит):
public void onClick(View src) {
// check for authentic credentials
if(IsValid())
{
Intent loginAuth = new Intent("Login");
loginAuth.putExtra("userRole", userRole);
Log.d("LOGIN", "Setting result...");
if (getParent() == null) {
Log.d("LOGIN", "Parent was null");
setResult(Activity.RESULT_OK, loginAuth);
}
else {
Log.d("LOGIN", "setting result on parent...");
getParent().setResult(Activity.RESULT_OK, loginAuth);
}
Log.d("LOGIN", "Finishing the activity");
finish();
}
}
Я определил эти действия в своем файле манифестаследующим образом:
<activity android:name="Home"
android:theme="@style/Theme"
android:launchMode="singleInstance"
android:stateNotNeeded="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="Login"
android:label="Login"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</activity>
Я играл с фильтром намерений при входе в систему.У меня изначально было ничего не установлено.У меня также был бланк launchMode (который по умолчанию стандартный, я считаю).Я поэкспериментировал с большинством этих параметров, и, похоже, ничто не меняет того факта, что ActivityManager, похоже, хочет запустить действие как новую задачу и хочет игнорировать возвращенное намерение (которое мне нужно).