Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
-
Aleks Pelevin
- Сообщения: 10
- Зарегистрирован: 26 янв 2014, 01:48
Сообщение
Aleks Pelevin » 04 фев 2014, 10:40
Подскажите пожалуйста! В наличии - мой app. В нем -полноэкранный активити: кнопка позвонить и часы... ну и фон красивый) Всё работает. Но мне нужно назначить это приложение - основным лончером системы., что бы при включении телефона и после возврата " домой " включался именно мой экран. Я так понял - это в манифесте нужно добавить Intent ? Запутался. В интернете пока ответ не нашел . Программка для
бабули. Прога уже готова, осталось только разобраться с этим.
Вот вырез из манифеста, проставил, что мог - результата нет. Не там ищу наверное....
Код: Выделить всё
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
Заранее спасибо!
Шьерт побьери а ведь есть в этом смысл!
-
altwin
- Сообщения: 1951
- Зарегистрирован: 13 ноя 2013, 14:46
Сообщение
altwin » 04 фев 2014, 15:04
если убрать повторяющуюся строку
<action android:name="android.intent.action.MAIN"/> все выглядит вроде правильным, но по куску вырезанному нельзя понять, что вообще происходит, даже не понятно в какой части манифеста у вас находится этот код, нужно не вырезы давать а полную картину. Тут можно посмотреть, как это вообще делается, может найдете отличия:
http://arnab.ch/blog/2013/08/how-to-wri ... n-android/
P.S. не стоит забывать, чтобы ваш ланчер был установлен по умолчанию - пользователь должен это выбрать, т.е. в настройках вам нужно указать использование своего приложения, как ланчера всегда. Просто так програмно заменить системные приложения вы не можете и не должны этого делать.
-
Aleks Pelevin
- Сообщения: 10
- Зарегистрирован: 26 янв 2014, 01:48
Сообщение
Aleks Pelevin » 05 фев 2014, 01:08
altwin писал(а):
P.S. не стоит забывать, чтобы ваш ланчер был установлен по умолчанию - пользователь должен это выбрать, т.е. в настройках вам нужно указать использование своего приложения, как ланчера всегда.
В этом и проблема, что в Android 4.3 его вообще нет в списке лончеров. Но после его открытия если нажать кнопку домой -список лончеров всё же выпадает, значит система частично понимает, что ето лончер, но именно моего apk. в этом списке нет. Там есть стандартный и Nova. Зато в Android 2.3 всё нормально( на эмуляторе ) - он есть и после выбора работает именно он. Даже после перезагрузки.
Манифест
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.buttfull"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.buttfull.FullscreenActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:theme="@style/FullscreenTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME"/>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
</application>
</manifest>
Ява
Код: Выделить всё
public class FullscreenActivity extends Activity implements OnClickListener {
Button button1;
Button button2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_fullscreen);
button1 = (Button) findViewById(R.id.butt);
button2 = (Button) findViewById(R.id.button2);
Animation vanish = AnimationUtils.loadAnimation(this,R.layout.vanish);
findViewById(R.id.butt).startAnimation(vanish);
Animation vanish1 = AnimationUtils.loadAnimation(this,R.layout.vanish1);
findViewById(R.id.button2).startAnimation(vanish1);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = null;
switch(v.getId()) {
case R.id.butt:
intent = new Intent(Intent.ACTION_DIAL);
startActivity(intent);
break;
case R.id.button2:
intent = new Intent(Intent.ACTION_MAIN);
startActivity(intent);
break;
}
}
}
Последний раз редактировалось
Aleks Pelevin 05 фев 2014, 02:04, всего редактировалось 1 раз.
Шьерт побьери а ведь есть в этом смысл!
-
altwin
- Сообщения: 1951
- Зарегистрирован: 13 ноя 2013, 14:46
Сообщение
altwin » 05 фев 2014, 01:36
исходя из того, который используется по умолчанию в Android:
https://github.com/android/platform_pac ... st.xml#L77
вам нужно заменить свой intent filter на этот:
[syntax=xml]
<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>
[/syntax]
у вас не только дублированная строчка MAIN но и LAUNCHER там ни к чему
P.S. хотя я не совсем понимаю, может ли это быть причиной того, оно не работает, странно как то.
-
Aleks Pelevin
- Сообщения: 10
- Зарегистрирован: 26 янв 2014, 01:48
Сообщение
Aleks Pelevin » 05 фев 2014, 05:22
БОЛЬШОЕ СПАСИБО! Всё работает! ! УРА!
Вот этот intent filter :
Код: Выделить всё
<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>
Шьерт побьери а ведь есть в этом смысл!