Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 89376 сообщений
Cообщения с меткой

андроид - Самое интересное в блогах

Следующие 30  »
Evgenij77

DIVVEE SOCIAL, НОВОСТИ ОТ 25 МАРТА 2017

Суббота, 25 Марта 2017 г. 22:51 (ссылка)
1541.ru/cms/divvee.php


DIVVEE SOCIAL НАЧАЛАСЬ РЕГИСТРАЦИЯ БЕСПЛАТНО И ПЛАТНО. РАБОТА без приглашений И С ПРИГЛАШЕНИЯМИ, заработок в Новом проекте на мобильных приложениях на любом устройстве,имеющем выход в интернет, есть реферальная система -можно приглашать, есть матрица. 7 ЦЕНТОВ ГРУБО ЗА 1 ЗАДАНИЕ.НОВОСТИ DIVVEE SOCIAL·25 МАРТА 2017 Г.









24 марта состоялась очередная рабочая встреча основателя компании DIVVEE Social РИЧАРДА СМИТА с лидерами русскоязычных команд.



 Кратко об итогах встречи:

1. С нашей стороны была выражена благодарность компании за честно выполняемые обещания, которые подтверждены такими фактами:

► Партнёры компании в США и в Колумбии за сутки ранее запланированного срока уже увидели свои доходы (в соц. сетях есть многочисленные подтверждения и приятно читать комментарии, где люди приятно порадованы куда большему результату, чем ожидали);

► Компания на самом деле производит возврат внесённого в Divvee взноса самым нервным и негативно настроенным людям. Нам грустно это наблюдать. Но этот факт ещё больше укрепляет авторитет компании, авторитет основателей и руководителей.



2. Из-за ошибок, которые были уже озвучены в выступлении основателей компании Troy Muhlestein и Richard Smith 17 марта 2017, а также генерального директора Даррена Олайна от 16 марта, компания получила оплату за выполненные заказы на 250 тысяч долларов меньше, чем ожидалось. С учётом, что подобных ошибок участники не станут более допускать, оплаченных заказов будет значительно больше.



3. Компания вышла на прямое сотрудничество с рекламными компаниями без посредников.



4. Компания подготавливает ежедневный пакет заданий, которые в общей сложности будут занимать у участника менее 40 минут в день. Ориентировочный выход такого пакета – к концу следующей недели.



5. Компания 5 недель назад сообщала, что юристы занимаются вопросами легализации 4 стран (Канада, Мексика, Перу, Япония). Но помимо этих стран к списку добавлены Россия и некоторые скандинавские страны.



Планируется, что к концу следующей недели указанные страны будут наглядно видеть свои позиции и точно знать, на каком этапе они находятся, какой пакет заданий будут иметь.

Эти страны будут иметь возможность оформить свои платёжные данные в банкинге (Предполагаем, что под банкингом имеется в виду система GPG. )





6. Россия находится в первых позициях списка стран по легализации. Более того, процесс легализации в России уже начался и проходит очень успешно. По планам компании на следующей неделе российские партнёры будут иметь полную информацию.

Компания предполагает, что уже в апреле участники из России будут видеть свои начисления по комиссионным вознаграждениям, а на следующей этапе смогут получать свои выплаты.



7. На вопрос лидеров о письме от компании про активацию системы GPG и отсутствии такой опции в бэк-офисах, Ричард Смит пояснил: " На следующей неделе у всех будет такая возможность".



8. Ричард Смит ещё раз отметил, что страны Евросоюза сейчас компания рассматривает, как единый блок.

На вопрос о статистике по количеству партнёров в Евросоюзе, Украине, Беларуси, Казахстане в момент встречи ответа не было, но был ориентир на то, что очень скоро будет портал, который будет всем странам отражать такую информацию.



9. Будет ли возможность оплачивать апргейд аккаунта не только монетами (коинсами), но и баллами, как это было предусмотрено ранее.



10. На вопрос о видах заданий. Будет опросник (анкета), 3-5 загрузок приложений и просмотр видео. Это будет занимать у участника не более 40 минут в день.



11. Был задан вопрос по зарегистрированному и оплаченному аккаунту участника, которому на сегодняшний день 16,5 лет. Ричард Смит ответил, что такой партнёр не может выполнять задания компании. Необходимо переоформление на того, кто старше 18 лет.



12. По работе приложений на базе iOS. Примерный (очень примерный ориентир – вторая половина мая).



13. На следующей неделе планируется восстановить график выхода официальной информации.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Vladimir_2017

Сервисные (секретные) коды для смартфонов Android

Понедельник, 20 Марта 2017 г. 12:27 (ссылка)


Сервисные (они же инженерные, они же секретные) коды используются для быстрого доступа к различным функциям, часто даже скрытым. Есть универсальные коды для Android, а есть те, которые доступны только для определенных моделей устройств.



 



Самые популярные секретные коды для Андроид смартфонов



Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Vladimir_2017

Как увеличить громкость звука на Android

Понедельник, 20 Марта 2017 г. 11:34 (ссылка)


Как улучшить качество звука через инженерное меню



 



Этот способ работает не на всех аппаратах. К тому же, стоит предупредить, что более высокая громкость динамика влечет за собой худшее качество звука. Эта инструкция также не походит для планшетов без возможности осуществления звонков, поскольку в них нету стандартного приложения набора номера.



Чтобы войти в инженерное меню, нужно открыть набор номера и ввести следующее: *#*#3646633#*#*. Далее переходим в «Audio», выбираем «Normal Mode» и «Type=Sph» и после этого последовательно меняем значения от «Level 0» до «Level 6». Чтобы сохранить, нажимайте для каждого из уровней «Set».



 



Volume+: как увеличить громкость звука на Android



 



Программа Volume+ поможет улучшить качество звука на смартфоне и увеличить громкость динамика, наушников и Bluetooth гарнитуры. Для каждого из этих пунктов есть отдельные настройки.



Присутствуют различные функции вроде эффекта визуальной комнаты и усиления НЧ. Имеются 10 предустановленных настроек, 5-полосный эквалайзер с настройками пользователя и 20 степеней регулировки звука. Распространяется Volume+ в двух версиях: бесплатной с некоторыми ограничениями и платной с расширенным функционалом.



Аналогично действует похожее приложение Volume Control.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
kseniasamohina

В который раз о компьютерных играх

Воскресенье, 12 Марта 2017 г. 19:10 (ссылка)
md-eksperiment.org/post/201...rnyh-igrah


Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
plushewa

В который раз о компьютерных играх

Воскресенье, 12 Марта 2017 г. 18:04 (ссылка)
md-eksperiment.org/post/201...rnyh-igrah


Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Понтифик_Иванов

В который раз о компьютерных играх

Воскресенье, 12 Марта 2017 г. 17:41 (ссылка)
md-eksperiment.org/post/201...rnyh-igrah

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
giecoffmor

Rpg online игры на андроид

Суббота, 12 Марта 2016 г. 05:45 (ссылка)

Rpg online игры на андроид.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Dmitriykn

Nox APP Player - эмулятор Android для компьютера

Четверг, 09 Марта 2017 г. 12:46 (ссылка)

Это цитата сообщения KtoNaNovenkogo Оригинальное сообщение

Genymotion - эмулятор Android для компьютера


  1. BlueStacks 2

  2. Droid4X

  3. Andy OS

  4. Genymotion

  5. Nox APP Player

  6. Какой из эмуляторов Android лучше

эмуляторы Android для компьютера

Какой из эмуляторов Андроида на компьютере выбрать, какой самый функциональный, а какой подойдет лучше для тех или иных целей? Давайте разбираться.
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
KtoNaNovenkogo

Genymotion - эмулятор Android для компьютера

Четверг, 09 Марта 2017 г. 12:44 (ссылка)


  1. BlueStacks 2

  2. Droid4X

  3. Andy OS

  4. Genymotion

  5. Nox APP Player

  6. Какой из эмуляторов Android лучше

эмуляторы Android для компьютера

Какой из эмуляторов Андроида на компьютере выбрать, какой самый функциональный, а какой подойдет лучше для тех или иных целей? Давайте разбираться.
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
racil

Игра на андроид дурак онлайн

Понедельник, 07 Марта 2016 г. 09:06 (ссылка)

Игра на андроид дурак онлайн.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
OnlyFreeSoft

http://free-players.ru/players

Суббота, 04 Марта 2017 г. 23:37 (ссылка)

Бесплатные плееры для Windows и Android

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Evgenij77

DIVVEE SOCIAL, Новый проект, ПРОГРАММЫ, мобильные приложения, заработок на телефонах, можно без приглашений

Четверг, 02 Марта 2017 г. 17:51 (ссылка)
1541.ru/cms/divvee.php


DIVVEE SOCIAL НАЧАЛАСЬ РЕГИСТРАЦИЯ БЕСПЛАТНО И ПЛАТНО. РАБОТА без приглашений И С ПРИГЛАШЕНИЯМИ, заработок в Новом проекте на мобильных приложениях на любом устройстве,имеющем выход в интернет, есть реферальная система -можно приглашать, есть матрица. 7 ЦЕНТОВ ГРУБО ЗА 1 ЗАДАНИЕ. Регистрация в данном случае только через моё устройство - для этого я должен иметь Ваш телефон, GMAIL.COM - гугл почту, которая привязана к устройству и  Вы сможете зайти в ЭТОМ устройстве ( телефон, планшет и.т.д.) только с операционной системой Андроид.



 


Я делаю приглашение и Вам на эту почту придет ссылка для регистрации, она формируется автоматически у меня.


 


Ссылку на скачивание из гугловского магазина приложения Divvee Life я высылаю ИЛИ скопируйте эту и здесь:


Для Android



 


При Регистрации можете как купить на $ 50  Coins - это годовая регистрация, так и зарегиться бесплатно, а потом из заработанных оплатить.


 


ОБЯЗАТЕЛЬНО ПРОСМОТРИТЕ ЭТУ СТРАНИЦУ ВНИМАТЕЛЬНО, ТЕКСТОВУЮ ЧАСТЬ ТОЖЕ -ЕСТЬ ВАЖНЫЕ МОМЕНТЫ.


КАК РЕГИСТРИРОВАТЬСЯ - СМОТРИТЕ ВИДЕО НА СТРАНИЦЕ САЙТА



 


Это вход в кабинет на компьютере. 


http://backoffice.divvee.social/#!/login


После регистрации Делайте требуемые настройки в кабинете  - фото, телефон, адрес и так далее - это ОБЯЗАТЕЛЬНО.


в кабинете в правом верхнем углу EDIT - редактируйте свои данные,фото,если временно не работает повторите позже


В процессе возможна просьба сменить пароль, повторяйте,если сбои, бывает, проверяйте почту даже в спаме.


При входе не ставьте ID, а логин и пароль,которые при регистрации не забудьте сохранить.


 


 


Система пока работает со сбоями - спокойно ждем. 2 варианта - либо все будет в порядке, либо не в порядке


 


Платят пока в Америке и Колумбии. У нас все наработанное сохраняется к выплате на момент легализации в нашей стране.


В данный момент заданий лично у меня  - нет.


Когда появляются, пока насчитываются внизу приложения в правом углу только COIN, другие начисления ждем..


 


Идут работы - делают заплатку к Apple - пока же работа только в операционке андроид.


 


Приглашение к регистрации является одноразовым. Ссылки ограничены по времени. 


 


Я на связи  в скайпе evg7773 -будут вопросы, жду.


 


После регистрации заходите в ваше приложение, вводите пароль и логин ( не ID) и выполняйте понятные и доступные для вас задания,


набирая за них  COIN,s 


Ими оплатите нового вашего приглашенного = 10 коинов или потом сможете использовать коины для работы с платными приложениями и так далее.


Параллельно коинам идет набор поинтов, пока мы их не видим, но учет, как сказали,ведется.


 


В приложение заходите почаше, пока нет четкости показов заданий, не ищите особых ответов, просто следите за приложением, чатом. 


Если лично у Вас заданий нет ( по идее 5 заданий в час ), ждите, не паникуйте. 


Либо все наладится, либо соскамится. Надеемся на лучшее.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Evgenij77

DIVVEE SOCIAL, Новый проект, ПРОГРАММЫ, мобильные приложения, заработок на телефонах, можно без приглашений

Вторник, 01 Февраля 2017 г. 00:26 (ссылка)
1541.ru/cms/divvee.php


DIVVEE SOCIAL НАЧАЛАСЬ РЕГИСТРАЦИЯ БЕСПЛАТНО И ПЛАТНО. РАБОТА без приглашений И С ПРИГЛАШЕНИЯМИ, заработок в Новом проекте на мобильных приложениях на любом устройстве,имеющем выход в интернет, есть реферальная система -можно приглашать, есть матрица. 7 ЦЕНТОВ ГРУБО ЗА 1 ЗАДАНИЕ.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
ermolenko_ludmila

18 скрытых возможностей мессенджеров, которые стоит знать каждому

Воскресенье, 27 Февраля 2017 г. 02:18 (ссылка)


ВОЗМОЖНОСТИ МЕССЕНДЖЕРОВ



18 скрытых возможностей мессенджеров, которые стоит знать каждому



Сегодня редко встретишь смартфон, на котором не был бы установлен хоть какой-нибудь мессенджер. И неудивительно, ведь эти удобные приложения заменили нам СМС и телефонные разговоры. Но мало кто знает обо всех скрытых возможностях этих программ.



4877129__1_ (223x52, 2Kb)
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Chizz_TecTeP

Передача практически любых объектов между активностями через строку

Среда, 22 Февраля 2017 г. 11:56 (ссылка)


кладем















JavaВыделить код











1
2



        Intent intent = new Intent();
        intent.putExtra("param1", new Gson().toJson(some_class_object));






достаем















JavaВыделить код











1



SomeClass object = new Gson().fromJson(intent.getStringExtra("param1"), SomeClass.class);





Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Модификация стоковых прошивок для Android. Часть 5. Революция c Xposed Framework

Понедельник, 20 Февраля 2017 г. 10:13 (ссылка)

В 2012 году пользователь с ником rovo89 на комьюнити XDA опубликовал исходные коды и готовый к использованию фреймворк, упрощающий кастомизацию прошивок, с подробной инструкцией и примерами, предложив альтернативу традицоинному, на тот момент, способу (деоксидирование -> дизассемблирование -> декомпиляция -> рекомпиляция -> тестирование -> загрузка патчей в телефон): Часть 1, Часть 2, Часть 3, Часть 4

Он предложил использовать отдельные модули, которые можно изменять фактически налету, не вмешиваясь в исходный код прошивки или отдельных ее компонентов. Но авторитетные разработчики хором ответили: "Неа… никому это не нужно"



Rovo не забросил свое детище, а продолжил развитие. Когда в 2013-ом году вышла версия KitKat, все то же сообщество именитых девелоперов ответило: "Неа, это слишком опасно… хотя..."



Тем временем Google принял решение выпускать новую версию операционной системы ежегодно. Разумеется, стало накладно кастомизировать прошивки: не успеваешь сделать одну, как появляется новая версия ОС. Так в 2014-ом выходит версия Lollipop и разработчики наконец обращают внимание на фреймфорк с мыслями: "Может все же стоит посмотреть что это такое? Выглядит многообещающим".



В 2015-ом году вышла очередная версия (Marshmallow) и большая часть сообщества, в итоге, признала разработку весьма стоящей, на порядок сокращающей время разработки кастомизаций стоковых прошивок в виде установки отдельных модулей, расширяющих функционал. "Ничего себе, это же совсем безопасно и есть библиотека готовых полезных модулей!" — воскликнули они.



Сейчас конец февраля 2017-го. Xposed под Nougat все еще не доступен, а толпы страждущих разработчиков и пользователей то и дело открывают темы под тип "Xposed не работает! Он мне нужен! Rovo, пожалуйста!"



Сегодня я расскажу об Xposed Framework.



Отказ от ответственности



Любые названия продуктов и торговые марки, упоминаемые в тексте, являются собственностью их зарегистрированных владельцев. Тексты статьи опубликован в образовательных целях. Авторы (@Falseclock и xronofag) не несут ответственность за возможные убытки, порчу оборудования, недополученную прибыль вследствие попыток воспроизведения или использования информации в данной статье. Продолжая читать, читатель тем самым подтверждает, что любое использование исходного кода может повлечь для него риски.



Отступление



Больше трех лет назад я начал писать цикл статей про модификацию прошивок для Android. В данный момент актуальность данных статей весьма сомнительна: процесс очень трудоемок, требует много времени и инструментов, а малейшая ошибка может обернуться значительными проблемами вплоть до полной перепрошивки телефона.



Я прождал около двух лет в надежде, что кто-то все же опишет на Хабре что такое Xposed Framework и как он может упросить процесс кастомизации приложений, но подозреваю, что мало кто знаком с этим чудным творением. Для своих нужд я написал несколько десятков модулей, некоторые даже публиковал в общем репозитарии, который на данный момент содержит более 1000 готовых к эксплуатации разработок. Каждый модуль — это может быть не одна единственная кастомизация, а целый набор функций с интерфейсом настроек или дополнительного функционала. Яркий пример тому GravityBox или Sense ToolBox.



Я не буду описывать процесс установки и получение root прав, а хочу описать что из себя представляет фреймфорк и как написать простейший модуль.



Установка



Если раньше для установки сторонней прошивки требовалось производить разблокировку загрузчика телефона, то для использования Xposed пользователю необходимо всего лишь иметь root права на телефоне. Даже сейчас получение этих прав на большинстве девайсов не представляет больших сложностей: вы скачиваете приложение, а оно само делает все нужные манипуляции и через несколько минут вы становитесь обладателем телефона с уровнем прав «БОГ».



Принцип работы «на пальцах»



В системе Android есть процесс под название «Zygote». Это и есть основная исполнительная система. Любой процесс запускается как его копия. Zygote запускается через /init.rc как только загружается основное ядро системы. Запуск приложений осуществляется через скрипт /system/bin/app_process, который подгружает необходимые классы и запускает инициализацию приложения через задекларированные методы.



Именно в этом месте на сцену выходит Xposed. При установке фреймворка модифицированный app_process копируется в /system/bin. Суть модификации в том, что в переменную среду добавляется дополнительная jar библиотека, которая может исполнять специальные методы при определенных условиях и случаях. Например, мы можем вмешаться сразу, как только создается виртуальная машина Dalvik или даже перед тем как будет вызван основной метод Zygote. Являясь частью процесса Zygote, мы можем вмешиваться в работу любых методов, даже синтетических и производить любые действия в их контексте.



Практическая ценность Xposed



Предположим, необходимо изменить какой-то метод, и, например, вместо булева значения TRUE вернуть FALSE. Вместо трудоемкого и затратного традиционного метода (разбираем-собираем-тестируем приложение) вы можете «перехватить» этот метод класса и «вживить» свой Java код, который произведет необходимую операцию (изменит, в данном примере, значение) и вернет нужный нам результат. При этом, с Xposed можно: модифицировать или просто посмотреть какие данные передаются в метод, либо после исполнения метода узнать результат обработки данных и в зависимости от требований изменить их или воспользоваться ими.



Бывают случаи, когда вы не хотите, чтобы тот или иной метод вообще срабатывал, либо хотите полностью поменять логику и алгоритм. Xposed позволяет полностью заменить метод, либо не дать ему вообще сработать.



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



А теперь главное — зачастую не приходится даже изменять работу модуля (или производить минимальные доработки) с выходом новой версии прошивки/приложения! Это логично, ведь названия методов, классов и переменных, как правило, остаются прежними.



Не правда ли, удобно?



Создание модуля



Сам модуль — это обычный apk файл, созданный в среде разработки. В нем не обязательно должно присутствовать какое-то Activity либо графические ресурсы. По сути там может быть только один файл с инструкцией, разумеется помимо обязательных файлов, и модуль может работать. Для настройки нам надо сделать три вещи:



Manifest.xml



При установке любого приложения Xposed проверяет наличие определенных заголовков в Manifest.xml. Если есть три нужные строки, то фреймворк сохраняет информацию о приложении в своих настройках и далее вы можете активировать установленный модуль (здесь и далее будут использоваться примеры кода разных модулей, в том числе и для из известных приложений).







С первой строкой все понятно.



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



Третья строка определяет как будет идентифицироваться ваше приложение в списке доступных или установленных модулей на вашем телефоне.



/assets/xposed_init



В корне вашего приложения необходимо создать папку assets и положить в него файл с названием xposed_init. Внутри этого файла вы просто пишите в каком Java классе описана работа вашего модуля. Я привык называть класс как XMain. В моем случае в файле присутствует строка



uber.hack.XMain



Java class



Сам класс должен содержать один из трех методов для работы с фреймворком. Не обязательно указывать все, можно лишь указать те, с которыми вы планируете делать модификацию приложения или приложений. Я по привычке указываю все как шаблон.

public class XMain implements IXposedHookInitPackageResources, IXposedHookLoadPackage, IXposedHookZygoteInit
{
public void initZygote(StartupParam startupParam) throws Throwable { }

public void handleInitPackageResources(InitPackageResourcesParam resparam) throws Throwable { }

public void handleLoadPackage( LoadPackageParam paramLoadPackageParam) throws Throwable { }
}


Метод initZygote исполняется тогда, когда ваш модуль загружается в память.

Весьма удобен, если в вашем приложении имеется Activity с настройками вашего модуля. Как правило, данные вашего приложения сохраняются в файл

/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml. Во время загрузки вы можете единожды получить дескриптор и во время работы просто считывать с него ваши настройки. Также можно предопределить любые переменные, сделать проверки. По сути это аналог метода-конструктора.



Метод handleLoadPackage исполняется в тот момент, когда Dalvik загружает исходный код любого! приложения при запуске. Это очень важный момент. Если у вас в телефоне 10 различных модулей, то через этот метод исходники запускаемого приложения «прогонятся» во всех 10-ти случаях. Для фильтрации используется обычная проверка по названию пакета. Разумеется, если вы хотите изменить работу нескольких приложений, то ставите столько проверок сколько вам нужно.

public void handleLoadPackage( LoadPackageParam paramLoadPackageParam) throws Throwable {
final LoadPackageParam llpm = paramLoadPackageParam;
String packageName = llpm.packageName;

if (packageName.contains("ubercab.driver"))
{

}
}


Метод handleInitPackageResources нужен вам тогда, когда вы хотите подменить ресурсы приложения во время их загрузки в память. Здесь тоже самое как и с handleLoadPackage — вы фильтруете по названию приложения.

public void handleInitPackageResources(InitPackageResourcesParam resparam) throws Throwable {
String pkg = resparam.packageName;
if (pkg.equals("com.ubercab.driver")) {
}
}


Важно указать наименование приложения так, как оно указано в манифесте.

На этом настройка модуля в среде разработки закончена и можем приступить непосредственно к программированию.



Примеры кода



Основной код, если вы конечно не решили всего лишь изменить цвета или шрифты какого-то приложения, происходят в handleLoadPackage. Для этого мы предварительно изучаем исходный код интересующего приложения, придумываем как модифицировать код и описываем нашу логику.

Основная логика работает через findAndHookMethod метод, реже через findAndHookConstructor и findClass. Все основные методы можно подглядеть в классе XposedHelpers.



Выглядит это примерно так:

if (packageName.contains("ubercab.driver"))
{
try {
XposedHelpers.findAndHookMethod(
"com.ubercab.driver.feature.online.DispatchedFragment",
llpm.classLoader,
"onCreateView",
"android.view.LayoutInflater", "android.view.ViewGroup", "android.os.Bundle",
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {

}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {

}
}
);
} catch (Throwable t) {
XposedBridge.log(t);
}
}


В первую очередь нам надо обернуть наши «хуки» в try/catch, так как если в вашем коде будет ошибка, без обертки основное приложение может завершить работу c ошибкой, а полный трейс может попасть разработчику, который станет в курсе, что на его приложение наложили модуль. При обертке весь трейс можно вывести в лог Xposed и понять где у нас произошла ошибка и почему.



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



Вот пример как можно заполучить контекст класса и воспользоваться им

Ловля контекста
try{
XposedHelpers.findAndHookMethod("com.ubercab.driver.core.app.DriverApplication", llpm.classLoader, "init", new XC_MethodHook()
{
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable
{
Application application = (Application) param.thisObject;
Context context = application.getApplicationContext();
Intent intent = new Intent("uber.hack.ACTION_BACKGROUND");
context.sendBroadcast(intent);
}
});
} catch (Throwable t) {
XposedBridge.log(t);
}


Мы отлавливаем загрузку метода init в классе DriverApplication и через param.thisObject используем контекст для отправки широковещательного сообщения нашему ресиверу или сервису.



или если необходимо изменить передаваемые переменные в метод, то сделать это можно через

beforeHookedMethod
try{
XposedHelpers.findAndHookMethod("com.htc.htcdialer.widget.DividerDrawable", paramLoadPackageParam.classLoader, "setDividerColor", "int", "int", new XC_MethodHook()
{
protected void beforeHookedMethod(MethodHookParam param) throws Throwable
{
int paramInt1 = (Integer) param.args[0];
int paramInt2 = (Integer) param.args[1];

if (paramInt1 == 4) {
if (paramInt2 == -13388315)
param.args[1] = Color.RED;

if (paramInt2 == -13128336)
param.args[1] = Color.BLUE;
}
}
});
} catch (Throwable t) {
XposedBridge.log(t);
}




Помимо XC_MethodHook можно использовать XC_MethodReplacement. Название говорит само за себя. Мы полностью заменяем какой-то метод нашим собственным. Вот типичный пример когда мне захотелось избавиться от всплывающего уведомления, когда я подключаю телефон по USB к ноутбуку

SetUSBNotification
findAndHookMethod("com.android.settings.PSService", paramLoadPackageParam.classLoader, "SetUSBNotification", "android.content.Context", boolean.class, new XC_MethodReplacement()
{
protected Object replaceHookedMethod(MethodHookParam param) throws Throwable
{
return null;
}
});


В данном void методе вызывалось уведомление. Я его просто заменил и забыл что мне когда-то это мешало.



Были случаи и посложней. Я своими модулями исправлял ошибки в системных приложениях. Ждать, когда производитель исправит баг в новом ОТА приложении меня не особо прельщало, поэтому я исправлял сам.

Исправленные баги
public static void tweak_fix98918()
{
// --------------------------------------------------
// https://android-review.googlesource.com/#/c/98918/
// --------------------------------------------------
try {
final Class ActiveServices = XposedHelpers.findClass("com.android.server.am.ActiveServices", null);

XposedHelpers.findAndHookMethod(ActiveServices, "killServicesLocked", "com.android.server.am.ProcessRecord", "boolean", new XC_MethodReplacement()
{
@Override
protected Object replaceHookedMethod(MethodHookParam param) throws Throwable
{
// XposedBridge.log("killServicesLocked happen");

Boolean DEBUG_SERVICE = (Boolean) XposedHelpers.getStaticBooleanField(ActiveServices, "DEBUG_SERVICE");
String TAG = (String) XposedHelpers.getStaticObjectField(ActiveServices, "TAG");

Object app = param.args[0];
boolean allowRestart = (Boolean) param.args[1];
Object services = XposedHelpers.getObjectField(app, "services");
int size = (Integer) XposedHelpers.callMethod(services, "size");

// First clear app state from services.
for (int i = size - 1; i >= 0; i--) {
Object sr = XposedHelpers.callMethod(services, "valueAt", i);
Object stats = XposedHelpers.getObjectField(sr, "stats");
synchronized (XposedHelpers.callMethod(stats, "getBatteryStats")) {
XposedHelpers.callMethod(stats, "stopLaunchedLocked");
}
Object sr_app = XposedHelpers.getObjectField(sr, "app");
Boolean persistent = XposedHelpers.getBooleanField(sr_app, "persistent");
Boolean stopIfKilled = XposedHelpers.getBooleanField(sr, "stopIfKilled");

if (sr_app != null && !persistent && stopIfKilled) {
Object sr_app_services = XposedHelpers.getObjectField(sr_app, "services");
XposedHelpers.callMethod(sr_app_services, "remove", sr);
}
XposedHelpers.setObjectField(sr, "app", null);
XposedHelpers.setObjectField(sr, "isolatedProc", null);
XposedHelpers.setObjectField(sr, "executeNesting", 0);
XposedHelpers.callMethod(sr, "forceClearTracker");

Object mDestroyingServices = XposedHelpers.getObjectField(param.thisObject, "mDestroyingServices");
Boolean check = (Boolean) XposedHelpers.callMethod(mDestroyingServices, "remove", sr);
if (check) {
if (DEBUG_SERVICE)
Slog.v(TAG, "killServices remove destroying " + sr);
}

Object bindings = XposedHelpers.getObjectField(sr, "bindings");
final int numClients = (Integer) XposedHelpers.callMethod(bindings, "size");
for (int bindingi = numClients - 1; bindingi >= 0; bindingi--) {
Object IntentBindRecord = XposedHelpers.callMethod(bindings, "valueAt", bindingi);
if (DEBUG_SERVICE)
Slog.v(TAG, "Killing binding " + IntentBindRecord + ": shouldUnbind=" + XposedHelpers.getObjectField(IntentBindRecord, "hasBound"));

XposedHelpers.setObjectField(IntentBindRecord, "binder", null);
XposedHelpers.setObjectField(IntentBindRecord, "requested", false);
XposedHelpers.setObjectField(IntentBindRecord, "received", false);
XposedHelpers.setObjectField(IntentBindRecord, "hasBound", false);
}
}

// Clean up any connections this application has to
// other
// services.
Object connections = XposedHelpers.getObjectField(app, "connections");
size = (Integer) XposedHelpers.callMethod(connections, "size");
for (int i = size - 1; i >= 0; i--) {
Object ConnectionRecord = XposedHelpers.callMethod(connections, "valueAt", i);

XposedHelpers.callMethod(param.thisObject, "removeConnectionLocked", ConnectionRecord, app, null);
}
XposedHelpers.callMethod(connections, "clear");

Object smap = XposedHelpers.callMethod(param.thisObject, "getServiceMap", XposedHelpers.getObjectField(app, "userId"));

// Now do remaining service cleanup.
services = XposedHelpers.getObjectField(app, "services");
size = (Integer) XposedHelpers.callMethod(services, "size");
for (int i = size - 1; i >= 0; i--) {
Object sr = XposedHelpers.callMethod(services, "valueAt", i);
Object mServicesByName = XposedHelpers.getObjectField(smap, "mServicesByName");
if (XposedHelpers.callMethod(mServicesByName, "get", XposedHelpers.getObjectField(sr, "name")) != sr) {
Object cur = XposedHelpers.callMethod(mServicesByName, "get", XposedHelpers.getObjectField(sr, "name"));
Slog.wtf(TAG, "Service " + sr + " in process " + app + " not same as in map: " + cur);
Object app_services = XposedHelpers.getObjectField(app, "services");
XposedHelpers.callMethod(app_services, "removeAt", i);
continue;
}
// Any services running in the application may
// need to be
// placed back in the pending list.
Object serviceInfo = XposedHelpers.getObjectField(sr, "serviceInfo");
Object applicationInfo = XposedHelpers.getObjectField(serviceInfo, "applicationInfo");
if (allowRestart && XposedHelpers.getIntField(sr, "crashCount") >= 2 && (XposedHelpers.getIntField(applicationInfo, "flags") & ApplicationInfo.FLAG_PERSISTENT) == 0) {
Slog.w(TAG, "Service crashed " + XposedHelpers.getIntField(sr, "crashCount") + " times, stopping: " + sr);
EventLog.writeEvent(EventLogTags.AM_SERVICE_CRASHED_TOO_MUCH, XposedHelpers.getObjectField(sr, "userId"), XposedHelpers.getObjectField(sr, "crashCount"), XposedHelpers.getObjectField(sr, "shortName"), XposedHelpers.getObjectField(app, "pid"));
XposedHelpers.callMethod(param.thisObject, "bringDownServiceLocked", sr);
} else if (!allowRestart) {
XposedHelpers.callMethod(param.thisObject, "bringDownServiceLocked", sr);
} else {
boolean canceled = (Boolean) XposedHelpers.callMethod(param.thisObject, "scheduleServiceRestartLocked", sr, true);
// Should the service remain running? Note
// that in the
// extreme case of so many attempts to
// deliver a command
// that it failed we also will stop it here.
if (XposedHelpers.getBooleanField(sr, "startRequested") && (XposedHelpers.getBooleanField(sr, "stopIfKilled") || canceled)) {
Object pendingStarts = XposedHelpers.getObjectField(sr, "pendingStarts");
if ((Integer) XposedHelpers.callMethod(pendingStarts, "size") == 0) {
XposedHelpers.setBooleanField(sr, "startRequested", false);
if (XposedHelpers.getObjectField(sr, "tracker") != null) {
Object tracker = XposedHelpers.getObjectField(sr, "tracker");
Object mAm = XposedHelpers.getObjectField(param.thisObject, "mAm");
Object mProcessStats = XposedHelpers.getObjectField(mAm, "mProcessStats");
XposedHelpers.callMethod(tracker, "setStarted", false, XposedHelpers.callMethod(mProcessStats, "getMemFactorLocked"), SystemClock.uptimeMillis());
}
if (!XposedHelpers.getBooleanField(sr, "hasAutoCreateConnections")) {
// Whoops, no reason to restart!
XposedHelpers.callMethod(param.thisObject, "bringDownServiceLocked", sr);
}
}
}
}
}

if (!allowRestart) {
Object app_services = XposedHelpers.getObjectField(app, "services");
XposedHelpers.callMethod(app_services, "clear");

// Make sure there are no more restarting
// services for this
// process.
Object mRestartingServices = XposedHelpers.getObjectField(param.thisObject, "mRestartingServices");

for (int i = (Integer) XposedHelpers.callMethod(mRestartingServices, "size") - 1; i >= 0; i--) {
Object r = XposedHelpers.callMethod(mRestartingServices, "get", i);
String processName = (String) XposedHelpers.getObjectField(r, "processName");
Object serviceInfo = XposedHelpers.getObjectField(r, "serviceInfo");
Object applicationInfo = XposedHelpers.getObjectField(serviceInfo, "applicationInfo");
Object info = XposedHelpers.getObjectField(app, "info");
if (processName.equals((String) XposedHelpers.getObjectField(app, "processName")) && XposedHelpers.getIntField(applicationInfo, "uid") == XposedHelpers.getIntField(info, "uid")) {
XposedHelpers.callMethod(mRestartingServices, "remove", i);
XposedHelpers.callMethod(param.thisObject, "clearRestartingIfNeededLocked", r);
}
}
Object mPendingServices = XposedHelpers.getObjectField(param.thisObject, "mPendingServices");
for (int i = (Integer) XposedHelpers.callMethod(mPendingServices, "size") - 1; i >= 0; i--) {
Object r = XposedHelpers.callMethod(mPendingServices, "get", i);

String processName = (String) XposedHelpers.getObjectField(r, "processName");
Object serviceInfo = XposedHelpers.getObjectField(r, "serviceInfo");
Object applicationInfo = XposedHelpers.getObjectField(serviceInfo, "applicationInfo");
Object info = XposedHelpers.getObjectField(app, "info");
if (processName.equals((String) XposedHelpers.getObjectField(app, "processName")) && XposedHelpers.getIntField(applicationInfo, "uid") == XposedHelpers.getIntField(info, "uid")) {
XposedHelpers.callMethod(mPendingServices, "remove", i);
}
}
}
// Make sure we have no more records on the stopping
// list.
Object mDestroyingServices = XposedHelpers.getObjectField(param.thisObject, "mDestroyingServices");
int i = (Integer) XposedHelpers.callMethod(mDestroyingServices, "size");
while (i > 0) {
i--;
Object sr = XposedHelpers.callMethod(mDestroyingServices, "get", i);
if (XposedHelpers.getObjectField(sr, "app") == app) {
XposedHelpers.callMethod(sr, "forceClearTracker");
XposedHelpers.callMethod(mDestroyingServices, "remove", i);
if (DEBUG_SERVICE)
Slog.v(TAG, "killServices remove destroying " + sr);
}
}
Object executingServices = XposedHelpers.getObjectField(app, "executingServices");
XposedHelpers.callMethod(executingServices, "clear");

return null;
}
});

} catch (Throwable t) {
XposedBridge.log(t);
}
}




Вот так вот я разрешал всем приложениям писать информацию на SD карточку, когда этот функционал урезали в целях безопасности на KitKat

hookSDcardPermission
try {
XposedHelpers.findAndHookMethod("com.android.server.SystemConfig", paramLoadPackageParam.classLoader, "readPermission", "org.xmlpull.v1.XmlPullParser", "java.lang.String", new XC_MethodHook()
{
protected void afterHookedMethod(MethodHookParam param) throws Throwable
{
String permission = (String) param.args[1];

if (permission.equals("android.permission.WRITE_EXTERNAL_STORAGE")) {
Class

https://habrahabr.ru/post/318202/

Комментарии (0)КомментироватьВ цитатник или сообщество
Chizz_TecTeP

Дайджест материалов для мобильных разработчиков

Воскресенье, 19 Февраля 2017 г. 18:31 (ссылка)

Большой и интересный дайджест про работу Avito, разработку и публикацию AR/VR-приложений, интерфейсы, библиотеки, продуктовую аналитику и вовлеченность.



Где живут ваши объявления?

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

Как опубликовать приложение в Oculus Store и кому это нужно: опыт российских разработчиков

В ноябре 2016 мы выпустили Space Stalker – игру для мобильных VR шлемов. В процессе подготовки к паблишингу на Google Play и iOS команда решила, что было бы неплохо зарелизиться еще и в магазине Samsung Gear VR.

Наука на страже интерфейсов: как сделать кнопки в приложении по-настоящему удобными

Представьте, что вы создали интерфейс, в котором этой проблемы просто не существует. Интерфейс, который позволяет снизить число ошибок, выполнять команды быстрее и, в конечном счете, делает продукт лучше. Это вполне реально. И вот как это сделать.

Теперь дайджест доступен и в виде рассылки. Подписаться вы можете тут.
далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
kinoman_info

#мультяшки #скачать #бесплатно #приложение для #андроид #смарт приставки, медиалеер, #планшет , #смартфон, советские #мультики #онлайн бесплатно скача

Четверг, 16 Февраля 2017 г. 11:25 (ссылка)
sdelay-site.io.ua/s2600009_edit


#мультяшки #скачать #бесплатно #приложение для #андроид #смарт приставки, медиалеер, #планшет , #смартфон, советские #мультики #онлайн бесплатно скачать







1.





114 (114x114, 24Kb)

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
kinoman_info

#мультяшки скачать бесплатно приложение для андроид смарт приставки, медиалеер, планшет , смартфон, советские мультики онлайн бесплатно скачать

Четверг, 09 Февраля 2017 г. 21:21 (ссылка)
sdelay-site.io.ua/s2600009_edit


#мультяшки скачать бесплатно приложение для андроид смарт приставки, медиалеер, планшет , смартфон, советские мультики онлайн бесплатно скачать

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
bouvttars

Бесплатные игры шарики пузыри на андроид

Четверг, 09 Февраля 2017 г. 13:01 (ссылка)

Бесплатные игры шарики пузыри на андроид.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<андроид - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda