Android 将活动别名签入目标活动
我有一个名为A的活动。我想添加两个名为B和C的活动别名。是否可以知道A在代码中被称为B或C?当它被称为B或C时,我想应用不同的行为。您可以为每个Android 将活动别名签入目标活动,android,Android,我有一个名为A的活动。我想添加两个名为B和C的活动别名。是否可以知道A在代码中被称为B或C?当它被称为B或C时,我想应用不同的行为。您可以为每个提供一些附加信息: 除targetActivity外,属性是活动属性的子集。对于子集中的属性,为目标设置的任何值都不会结转到别名。但是,对于不在子集中的属性,为目标活动设置的值也适用于别名 在。中了解更多关于的信息。你是说开始活动时,你想知道它叫什么吗?是的,我想知道A是从B还是C中被称为“from” <activity android:n
提供一些附加信息:
除targetActivity外,属性是活动属性的子集。对于子集中的属性,为目标设置的任何值都不会结转到别名。但是,对于不在子集中的属性,为目标活动设置的值也适用于别名
在。中了解更多关于
的信息。你是说开始活动时,你想知道它叫什么吗?是的,我想知道A是从B还是C中被称为“from”
<activity
android:name=".HalloActivity"
android:label="@string/HalloDefault" >
</activity>
<activity-alias
android:name=".SalutActivity"
android:targetActivity=".HalloActivity"
android:label="@string/SalutAlias">
<meta-data android:name="LOCALE" android:value="fr" />
</activity-alias>
<activity-alias
android:name=".HelloActivity"
android:targetActivity=".HalloActivity"
android:label="@string/HelloAlias">
<meta-data android:name="LOCALE" android:value="en" />
</activity-alias>
Intent intent = new Intent();
String pName = getPackageName();
ComponentName componentName = new ComponentName(pName, pName + ".HelloActivity");
intent.setComponent(componentName);
startActivity(intent);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hallo);
String text;
String label = "?";
String locale = "de";
int color;
Intent intent = getIntent();
PackageManager pm = getPackageManager();
try
{
ActivityInfo ai = pm.getActivityInfo(intent.getComponent(), PackageManager.GET_META_DATA);
label = getString(ai.labelRes);
Bundle b = ai.metaData;
if (b != null)
{
locale = b.getString("LOCALE");
if (locale == null)
{
locale = "en";
}
}
}
catch (Exception ex)
{
Log.e(TAG, ex.getMessage());
}
switch(locale)
{
case "en":
text = "hello world :)";
color = Color.BLUE;
break;
case "fr":
text = "salut tout le monde :D";
color = Color.RED;
break;
default:
text = "hallo zusammen ;)";
color = Color.GREEN;
}
TextView tvHello = (TextView) findViewById(R.id.tvHello);
tvHello.setText(text);
tvHello.setTextColor(color);
TextView tvLabel = (TextView) findViewById(R.id.tvLabel);
tvLabel.setText(label);
}