Сегодня ComputerWorld опубликовал такую штуку, от которой лично у меня до сих пор волосы дыбом!

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

Google may discover a product that violates the developer distribution agreement … in such an instance, Google retains the right to remotely remove those applications from your device at its sole discretion

Ну ничего себе они мне такое рассказывают! Как пользователь я бы очень не хотел чтобы “Большой Брат” сидел в моем телефоне и следил за тем как, когда и зачем я использую установленное ПО. И к тому же все это на “открытой платформе Android“. Ну надо же было так испоганить идею.

Напомню что подобная возможность, называемая “Remote Kill Switch”, ранее была обнаружена в телефонах Apple iPhone, что вызвало недовольство со стороны пользователей, обеспокоенных ущемлением их прав.

Вместе с тем, Google обещает что будет стараться вернуть деньги пользователю за удаленное ПО:

In addition, Google says that if it does remotely remove an application, it will try to get users their money back

Классно! Всю жизнь мечтал. Google именно “будет стараться”, никаких гарантий. Описание подобных “стараний” найти не удалось.

Как разработчика меня, возможно, устроил бы вариант с удалением пиратских копий моего ПО, но возврат денежек за пиратскую копию как-то… не радует.

Вот так из хорошего получается странное… А в том, как же это работает, нужно будет еще разобраться.

Previous ArticleNext Article
Технический директор IT-Dimension, компании-разработчика кросс-платформенного программного обеспечения

This post has 5 Comments

5
  1. да есть такая тема. однако, думается мне что это немного не то, что вшито в айфон.

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

    я представляю себе это так:
    написал чувачёк програмульку типа “блокнот”, привязал к ней какойнить руткит и выложил в android market. прогу купило какоето количество пиплов и тут гугле обнаруживает, что в проге сидит руткит. “отзывает” эту софтину и возврашает деньги.

    в то время как apple убивала софт без объяснения причин и без явных нарушений каких-либо договоров.

    итого

    причина гугле – забота о безопасности юзеров.

    причина аппле – забота о своём кошельке.


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

    как-то так.

  2. Вот нашел оригинальный текст Android Market Policies… Ну, не смертельно, но там все далеко не так радужно как хотелось бы..
    Еще и эта штука с возвратом в течении суток… Например возврат какого-нибудь твикера, который раз всего в течении жизни смартфона будет использоваться, может оказаться очень неприятным для разработчиков.
    Как-то участвовал в бета-тестировании твикера для смартфонов и получил от компании-разработчика лицензию в качестве благодарности за тестирование, так вот, пользовался я им всего один раз, и больше как-то смысла не вижу, ОС я на смартфоне не перустанавливаю, пожтому он мне как бы и не нужен. С возвратом в течении суток такой класс утилит потенциально теряет привлекательность для разработчиков…
    Но это, в общем-то, тема уже совсем другой истории.. 🙂

  3. О, спасибо. Интересный линк, полистаем.

    Я думаю что это первое время народ будет озадачен, а потом как разберётся что к чему всё встанет на свои места.

    а что за твикер?

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

  4. Насчет утилит-твикеров – ну почему же они потеряют привлекательность.. Отнюдь нет, можно лишь чуть по-другому их оформить. Например, если утилита при деинсталляции будет откатывать все сделанные изменения – тогда все становится на свои места. Ты пробуешь твикер, если не понравилось – в течение суток возвражаешь его назад, вместе с плодами его работы. А если понравилось – то просто оставляешь его в смартфоне, вместе с плодами усилий.

Leave a Reply

Your email address will not be published. Required fields are marked *

И.

Интегрируем оплату через PayPal в Android-приложение

С некоторых пор PayPal предлагает возможность добавления функционала, связанного с оплатой, непосредственно в Android-приложения. Пользователям, в этом случае, нет необходимости заходить на сайт PayPal, все происходит непосредственно в программе. Для этих целей доступен SDK. О том, как его использовать я расскажу в этот раз.

Настройка приложения

Для начала качаем SDK с официального сайта.

Затем создаем Android-приложение в Eclipse.

В архиве с PayPal SDK есть jar-файл PayPal_MPL.jar, который нам необходимо положить в подкаталог lib внутри каталога с исходным кодом нашего приложения (подкаталог lib создаем руками, никто за нас автоматически этого не сделает).

Затем идем в настройки проекта в раздел Java Build Path и на вкладке Libraries с помощью кнопки Add JARs… добавляем эту библиотеку в список используемых в нашем проекте.

В созданном приложении в манифесте необходимо добавить следующие строки:

<activity android:name="com.paypal.android.MEP.PayPalActivity"
                    android:theme="@android:style/Theme.Translucent.NoTitleBar"
                    android:configChanges="keyboardHidden|orientation"/>

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

После этого можно приступать к написанию кода.

Кодинг

SDK позволяет создавать брендированные кнопки для вызова окна оплаты. И вот при создании activity (в методе onCreate()) мы создадим такую кнопку и добавим в layout.

private static final String PAYPAL_APP_ID = "APP-80W284485P519543T";
PayPal mPayPal;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mPayPal = PayPal.initWithAppID(
				MainActivity.this.getBaseContext(),
				PAYPAL_APP_ID,
				PayPal.ENV_SANDBOX);
    CheckoutButton payButton = mPayPal.getPaymentButton(PayPal.BUTTON_278x43, this, PayPal.PAYMENT_TYPE_HARD_GOODS);
   payButton.setOnClickListener(mPayButtonListener);
   LinearLayout mainLayout = (LinearLayout)findViewById(R.id.main_layout);
   mainLayout.addView(payButton,
       		new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}

Как видно из кода, у нас используется строка с PayPal Application ID. В примере используется тестовый ID приложения. Его можно посмотреть на странице аккаунта разработчика после регистрации на X.com.

Также хотелось бы отметить, что PayPal позволяет тестировать приложения с использованием “песочницы” (sandbox), а уже после тестирования можно настроить все так, чтобы приложение работало с реальным сайтом. В тестовом приложении мы указываем тип подключения PayPal.ENV_SANDBOX, который указывает что мы используем “песочницу”.

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

Отлично, кнопку мы добавили, но это всего лишь кнопка, она ничего не делает. Для того, чтобы она что-то делала, необходимо к ней добавить обработчик нажатия:

OnClickListener mPayButtonListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			PayPalPayment newPayment = new PayPalPayment();

			newPayment.setAmount("5.00");
			newPayment.setCurrency("USD");
			newPayment.setRecipient("zombie_1285772993_biz@wxwidgets.info");
			newPayment.setItemDescription("My Super Item");
			newPayment.setMerchantName("John Doe");

			Intent paypalIntent = new Intent(MainActivity.this, PayPalActivity.class);
			paypalIntent.putExtra(PayPalActivity.EXTRA_PAYMENT_INFO, newPayment);
			MainActivity.this.startActivityForResult(paypalIntent, 1);
		}
	};

E-mail получателя платежа можно получить в песочнице, предварительно создав аккаунт продавца в разделе Test Accounts.

После нажатия на кнопку на экране появляется activity, в которой можно произвести оплату:

E-mail отправителя платежа можно также получитьв “песочнице” после создания тестового аккаунта.

После завершения оплаты нам необходимо как-то узнать результат (оплата может быть отменена пользователем, может произойти ошибка отправки средств и т.д.). Для этого нам необходимо реализовать метод onActivityResult():

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    	String label = "";
    	String transactionID = data.getStringExtra(PayPalActivity.EXTRA_TRANSACTION_ID);
    	switch(resultCode) {
    		case Activity.RESULT_OK:
    			label = "OK";
    			break;
    		case Activity.RESULT_CANCELED:
    			label = "Cancelled";
    			break;
    		case PayPalActivity.RESULT_FAILURE:
    			label = "Failure";
    			break;
      	}
    	TextView resultLabelView = (TextView)findViewById(R.id.result_label);
    	resultLabelView.setText(label + ": " + transactionID);
}

Вместе с SDK поставляется неплохая документация, так что все вопросы решаются довольно быстро. В принципе, работа с PayPal MPL оставила только положительные ощущения, все просто и понятно, не глючит. Примеры, которые идут в поставке тоже работают нормально. Видно что SDK – цельный продукт.

Ну вот, собственно и все.

Напоследдок несколько ссылок:

Исходные коды тестового приложения.

С.

Свершилось! Android Native Development Kit Released!

Ну наконец-то разработчики платформы Android повернулись к нам лицом и выпустили Android Native Development Kit, который позволяет разрабатывать мобильные приложения для платформы Android на C++!

Что анонсировано в NDK:

  • Средства для сборки native-приложений для Android
  • Средства для встраивания native-библиотек в дистрибутивы приложений .apks
  • Набор заголовочных файлов и библиотек для создания native-приложений

NDK поддерживает набор инструкций ARMv5TE и содержит заголовки и статические библиотеки для:

  • libc
  • libm
  • JNI
  • libz
  • liblog

На самом деле NDK – это не полноценный инструментарий для разработки native-приложений и лучшим вариантом использования его все равно остается связка с Java-based GUI, но все равно, это уже значительный шаг вперед.