Страница 1 из 2

Урок 27. Читаем action из Intent

Добавлено: 23 окт 2011, 20:00
damager82
В этом уроке:
- читаем action из Intent


Click here to read this article!

Re: Урок 27. Читаем action из Intent

Добавлено: 13 окт 2012, 13:53
kudri
У меня такой вопрос:
необходимо узнать названия всех установленных в системе программ, есть у кого какие варианты?
Предполагаю, что это можно сделать с помощью intent, а точнее у каждого приложения будет intent фильтр с параметром
android.intent.action.MAIN, остается только вопрос, как можно определить хотя бы количество установленных приложений, а затем в цикле можно было бы узнать все их названия?
Кто делал нечто подобное, буду рад помощи

Re: Урок 27. Читаем action из Intent

Добавлено: 13 окт 2012, 14:34
AndreyI
kudri писал(а):У меня такой вопрос:
необходимо узнать названия всех установленных в системе программ, есть у кого какие варианты?
Предполагаю, что это можно сделать с помощью intent, а точнее у каждого приложения будет intent фильтр с параметром
android.intent.action.MAIN, остается только вопрос, как можно определить хотя бы количество установленных приложений, а затем в цикле можно было бы узнать все их названия?
Кто делал нечто подобное, буду рад помощи
Это можно сделать с помощью PackageManager

Re: Урок 27. Читаем action из Intent

Добавлено: 25 окт 2013, 19:53
demaunt
Здравствуйте.
В последней части урока, по нажатию кнопки Show Date должно выводиться 3 варианта: Date Basic, Date Extended, Data/Time Info.
Но у меня вместо Date Basic, Date Extended выводится имя проекта P0261_..., несмотря на то, что в P0261 в активити label прописано Date Basic и Date Extended.

Re: Урок 27. Читаем action из Intent

Добавлено: 28 ноя 2013, 15:29
Bestlis
Здравствуйте!

У меня при нажатии на Date/Time Info вбрасывается необработанное исключение:
11-28 12:29:05.097: E/AndroidRuntime(339): FATAL EXCEPTION: main
11-28 12:29:05.097: E/AndroidRuntime(339): java.lang.RuntimeException: Unable to start activity ComponentInfo{ua.bestlis.p0271_getintentaction/ua.bestlis.p0271_getintentaction.Info}: java.lang.NullPointerException
11-28 12:29:05.097: E/AndroidRuntime(339): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
11-28 12:29:05.097: E/AndroidRuntime(339): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
11-28 12:29:05.097: E/AndroidRuntime(339): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-28 12:29:05.097: E/AndroidRuntime(339): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
11-28 12:29:05.097: E/AndroidRuntime(339): at android.os.Handler.dispatchMessage(Handler.java:99)
11-28 12:29:05.097: E/AndroidRuntime(339): at android.os.Looper.loop(Looper.java:123)
11-28 12:29:05.097: E/AndroidRuntime(339): at android.app.ActivityThread.main(ActivityThread.java:3683)
11-28 12:29:05.097: E/AndroidRuntime(339): at java.lang.reflect.Method.invokeNative(Native Method)
11-28 12:29:05.097: E/AndroidRuntime(339): at java.lang.reflect.Method.invoke(Method.java:507)
11-28 12:29:05.097: E/AndroidRuntime(339): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-28 12:29:05.097: E/AndroidRuntime(339): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-28 12:29:05.097: E/AndroidRuntime(339): at dalvik.system.NativeStart.main(Native Method)
11-28 12:29:05.097: E/AndroidRuntime(339): Caused by: java.lang.NullPointerException
11-28 12:29:05.097: E/AndroidRuntime(339): at ua.bestlis.p0271_getintentaction.Info.onCreate(Info.java:41)
11-28 12:29:05.097: E/AndroidRuntime(339): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-28 12:29:05.097: E/AndroidRuntime(339): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
11-28 12:29:05.097: E/AndroidRuntime(339): ... 11 more

Всё!
Разобрался!!!
Затупил немного, не то view показывал в onCreate()

Re: Урок 27. Читаем action из Intent

Добавлено: 30 дек 2013, 13:56
CoMoVAIvoce
Добрый день. Отличные уроки. Скажите пожалуйста как учесть timezone при выводе значения времени?

Re: Урок 27. Читаем action из Intent

Добавлено: 15 янв 2014, 11:15
MASK
В уроке в тексте последнего кода нужно заменить , на ; в строке String format = "", textInfo = "";

Re: Урок 27. Читаем action из Intent

Добавлено: 15 янв 2014, 13:23
Mikhail_dev
Всё в порядке. Ничего менять не стоит. Это определение двух переменных класса String, которое выполняется через запятую.

Re: Урок 27. Читаем action из Intent

Добавлено: 15 янв 2014, 14:58
MASK
m090050, спасибо! как-то этот вариант я упустила )))

Re: Урок 27. Читаем action из Intent

Добавлено: 10 мар 2014, 20:38
Realist
А можно где-нибудь узнать action фильтров приложений, установленных на андроид-устройствах? Например Галереи или почты?

Re: Урок 27. Читаем action из Intent

Добавлено: 10 мар 2014, 20:49
Mikhail_dev

Re: Урок 27. Читаем action из Intent

Добавлено: 06 июл 2014, 19:06
compl
Добрый день.
В info.java, где мы по определенному action заполняем переменные, используется метод equals. Читал в разных источниках про него, но везде написано разное. Объясните пожалуйста, в чем отличие этого метода от "=="? Т.к. в коде заменил этот метод на сравнение "==", и ничего не изменилось.

[syntax=java]// в зависимости от action заполняем переменные
/*if (action.equals("com.hangover.intent.action.showtime")) {
format = "HH:mm:ss";
textInfo = "Time: ";
}*/
if (action=="com.hangover.intent.action.showtime") {
format = "HH:mm:ss";
textInfo = "Time: ";
}
else if (action.equals("com.hangover.intent.action.showdate")) {
format = "dd.MM.yyyy";
textInfo = "Date: ";
}[/syntax]

Re: Урок 27. Читаем action из Intent

Добавлено: 30 дек 2014, 12:16
peektoseen
Здравствуйте. Подскажите пожалуйста, а могу ли я как-нибудь предотвратить запуск intent.action из браузера?
Объясню:
Делаю хотспот (бесплатный wifi с авторизацией через соцсети). И при попытке войти например через facebook (<a href='ttps://www.facebook.com/dialog/oauth.....'>) - получаю следующую проблему: пользователю предлагается через что открыть ссылку через приложение (если оно установлено) или через браузер. Мне нужно, чтобы эта ссылка всегда открывалась через браузер, т.к. иначе я не смогу авторизовать пользователя.
Может можно в ссылке указать data-* атрибут, или какой-нибудь meta тег в заголовке страницы.

Re: Урок 27. Читаем action из Intent

Добавлено: 30 дек 2014, 13:04
Foenix
не совсем понятно что именно ты делаешь.
Если у приложения есть интерфейс, то тут стандартный вариант webview, отлов пришедших ответов от фейсбука и прочего.

Re: Урок 27. Читаем action из Intent

Добавлено: 18 янв 2015, 20:16
HamyaG
А можно привести полный код AndriodManifest.xml по этому уроку? просто в android studio нет визуального редактора, по предыдущим урокам я вроде как разобрался с манифестом и ручками писал, а тут какой то затык и не взлетает (

Re: Урок 27. Читаем action из Intent

Добавлено: 20 янв 2015, 08:22
HamyaG
все, разобрался, оказывается каждый фильтр должен быть описан отдельно, а я пытался все засунуть в один, вот правильный код
<activity android:name=".info"
android:theme="@style/Base.Theme.AppCompat.Dialog"
android:label="info">
<intent-filter>

<action android:name="showdate"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="showtime"/>

<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

Re: Урок 27. Читаем action из Intent

Добавлено: 14 фев 2015, 12:08
yanina_is
HamyaG писал(а):все, разобрался, оказывается каждый фильтр должен быть описан отдельно, а я пытался все засунуть в один, вот правильный код
Так оно и нужно в один фильтр все засунуть. По крайней мере я так поняла из урока. Вот мой манифест, все работает:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yanina_is.p027" >

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="Info" android:label="Date/timeInfo">
<intent-filter>
<action android:name="ru.startandroid.intent.action.showdate"/>
<action android:name="ru.startandroid.intent.action.showtime"/>
<category android:name="android.intent.category.DEFAULT"/>

</intent-filter>
</activity>
</application>

</manifest>

Re: Урок 27. Читаем action из Intent

Добавлено: 15 май 2015, 12:06
dstu4145
мені прийшлось все таки чучуть по-іншому записати:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.admin.p0271_getintentaction" >

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name="Info"
android:label="Date/time info" >
<intent-filter>
<action android:name="com.example.intent.action.showtime" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

<intent-filter>
<action android:name="com.example.intent.action.showdate" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

</activity>
</application>

</manifest>

так як просто прописати наступний код не достатньо в моїй ситуації:

<activity
android:name="Info"
android:label="Date/time info" >
<intent-filter>
<action android:name="com.example.intent.action.showtime" />
<action android:name="com.example.intent.action.showdate" />
<category android:name="android.intent.category.DEFAULT" />




</intent-filter>
</activity>


не виводить повідомлення про можливість вибору з інших action попереднього уроку

Re: Урок 27. Читаем action из Intent

Добавлено: 26 окт 2015, 22:43
Tinky-Winky
Ответ на вопрос пользователя "compl"

День добрый и вам
Постараюсь ответить на ваш вопрос в свете личного понимания.
Поскольку при разработке мы используем синтаксис языка java(для файлов nameApp.java),то и базовые понятия должны соответствовать этому синтаксису.

Не много теории.

equals это - операция сравнения содержимого соответствующих переменным областям памяти

== это - операция сравнения ссылок.

В чём разница?

метод equals(Object) класса java.lang.Object
сравнивает содержимое двух областей памяти

== операция сравнения двух ссылок на объекты. Т.е. эта операция вернет true тогда и только тогда, когда содержимое совпадает, что означает, что переменные указывают на ОДИН И ТОТ ЖЕ объект.

Что касается вашего случая то здесь есть маленький нюанс.
Одинаковые строки на самом деле являются единственным объектом. В чем легко убедиться, выполнив следующий код:
[syntax=java]
String str1 = "string";
String str2 = "string";
System.out.println(str1==str2 ? "the same" : "not the same");
[/syntax]

Результатом будет "the same". Что означает, что ссылки на строки равны. Это сделано на уровне компилятора, очевидно, для экономии памяти. Компилятор создает ОДИН экземпляр строки, и присваивает str1 и str2 ссылку на этот экземпляр.

Однако, это относится только к строкам, объявленным как литералы, в коде. Если скомпоновать строку из кусков, ссылка на нее будет другой. Подтверждение – данный пример:

[syntax=java]
String str1 = "string";
String str2 = "str";
String str3 = "ing";
System.out.println(str1==(str2+str3) ? "the same" : "not the same");
[/syntax]
Результатом будет "not the same". Также можно создать новый объект с помощью копирующего конструктора:

[syntax=java] String str1 = "string";
String str2 = new String("string");
System.out.println(str1==str2 ? "the same" : "not the same");
[/syntax]
Результатом также будет "not the same".

Таким образом, иногда строки можно сравнивать и через сравнение ссылок. Но на это лучше не полагаться.
При объяснении использованы материалы из сайта(http://www.skipy.ru)

Надеюсь смог помочь

Re: Урок 27. Читаем action из Intent

Добавлено: 25 авг 2017, 15:04
WKBAPKA
compl писал(а):Добрый день.
В info.java, где мы по определенному action заполняем переменные, используется метод equals. Читал в разных источниках про него, но везде написано разное. Объясните пожалуйста, в чем отличие этого метода от "=="? Т.к. в коде заменил этот метод на сравнение "==", и ничего не изменилось.

[syntax=java]// в зависимости от action заполняем переменные
/*if (action.equals("com.hangover.intent.action.showtime")) {
format = "HH:mm:ss";
textInfo = "Time: ";
}*/
if (action=="com.hangover.intent.action.showtime") {
format = "HH:mm:ss";
textInfo = "Time: ";
}
else if (action.equals("com.hangover.intent.action.showdate")) {
format = "dd.MM.yyyy";
textInfo = "Date: ";
}[/syntax]
action - это объект класса String. Когда мы пишем строку Java автоматически создает объект String. Т.к. это объекты то код сравнения через == будет всегда ложь, т.к. при сравнении будут определяться id объектов, а они разные будут всегда. Это легко проверить, создав 2 переменные String с одинаковым значением.
Поэтому, для сравнения используется этот метод