Создание/использование частной (приватной) активности
Частная активность — это активность, которую не могут запустить другие приложения. Поэтому она является наиболее безопасной активностью.
При использовании активности, которая используется только в приложении (частная активность), вам не нужно беспокоиться о том, что она будет случайно отправлена любому другому приложению, если вы явно укажете намерение использования этой активности. Однако сторонние приложения могут считывать намерения, используемые для запуска активности. Поэтому, если вы поместите конфиденциальную информацию в намерение запуска активности, необходимо принять меры предосторожности, чтобы гарантировать, что эта информация не будет прочитана злоумышленниками.
Ниже приведён пример кода создания частной активности:
taskAffinity
.launchMode
.false
.AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.jssec.android.activity.privateactivity" >
<application
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<!-- Частная активность -->
<!-- *** Пункт 1 *** Не указывайте taskAffinity -->
<!-- *** Пункт 2 *** Не указывайте launchMode -->
<!-- *** Пункт 3 *** Явно установите атрибут exported в значение false -->
<activity
android:name=".PrivateActivity"
android:label="@string/app_name"
android:exported="false" />
<!-- Публичная активность, запущенная средством запуска -->
<activity
android:name=".PrivateUserActivity"
android:label="@string/app_name"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
PrivateActivity.java
package org.jssec.android.activity.privateactivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class PrivateActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.private_activity);
// *** Пункт 4 *** Тщательно и безопасно обработайте полученное намерение, даже если оно было отправлено из того же приложения
String param = getIntent().getStringExtra("PARAM");
Toast.makeText(this, String.format("Received param: ¥"%s¥"", param), Toast.LENGTH_LONG).show();
}
public void onReturnResultClick(View view) {
// *** Пункт 5 *** Конфиденциальную информацию можно отправить, так как она отправляется и получается в рамках одного приложения
Intent intent = new Intent();
intent.putExtra("RESULT", "Sensitive Info");
setResult(RESULT_OK, intent);
finish();
}
}
Пример кода использования частной активности:
FLAG_ACTIVITY_NEW_TASK
для намерения, используемого для запуска активности.putExtra()
.Предупреждение: если не соблюдать пункты 1, 2 и 6, третьи стороны могут прочитать намерение. Для получения дополнительной информации см. разделы 4.1.2.2 и 4.1.2.3.
PrivateUserActivity.java
package org.jssec.android.activity.privateactivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class PrivateUserActivity extends Activity {
private static final int REQUEST_CODE = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_activity);
}
public void onUseActivityClick(View view) {
// *** Пункт 6 *** Не устанавливайте флаг FLAG_ACTIVITY_NEW_TASK для намерений, используемых для запуска активности
// *** Пункт 7 *** Используйте явные намерения с указанным классом для вызова активности в том же приложении
Intent intent = new Intent(this, PrivateActivity.class);
// *** Пункт 8 *** Конфиденциальная информация может быть отправлена только с помощью putExtra(), поскольку целевая активность находится в том же приложении
intent.putExtra("PARAM", "Sensitive Info");
startActivityForResult(intent,
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )