Android 如何使用从服务传递的意图启动活动
我有一个服务,它在字符串变量中获取类名,并使用以下代码传递给SharedReferences:Android 如何使用从服务传递的意图启动活动,android,android-intent,android-activity,Android,Android Intent,Android Activity,我有一个服务,它在字符串变量中获取类名,并使用以下代码传递给SharedReferences: settings.edit().putString("class", activityClass).commit(); ` 然后服务启动my passprompt活动,该活动需要读取字符串并启动存储在其中的活动 try { SharedPreferences settings = getApplicationContext().getSharedPrefer
settings.edit().putString("class", activityClass).commit();
`
然后服务启动my passprompt活动,该活动需要读取字符串并启动存储在其中的活动
try {
SharedPreferences settings = getApplicationContext().getSharedPreferences("data", Context.MODE_PRIVATE);
String c = settings.getString("class", "null");
Intent newIntent= new Intent(passprompt.this, Class.forName(c));
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(newIntent);
}
catch (ClassNotFoundException e) {
}
但是,预期的活动未按预期启动您可以尝试此操作
如果此活动在您的应用程序中包含
获取完全限定的活动类名并将其放入intent extra中,如下所示:
Intent newIntent= new Intent(Passprompt.this, Class.forName("your activity class name")));
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(newIntent);
如果这是另一个应用程序中的活动否
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("packagename", "packagename.launh_activity_name"));
startActivity(intent);
谢谢David,在Class.ForName中,还没有声明intent,这就是我遇到问题的原因,我应该创建两个intent对象吗?一个用于检索字符串,另一个用于启动新活动?但是我应该在新intent的参数中使用什么?currentactivity,x activity我已经编辑了上面的答案,并且建议用大写字母开头类名。我不能使用您的行Intent newIntent=…等,因为class.forName中使用的Intent对象尚未声明。我已经编辑了我的原始代码,因此您可以看到我现在如何声明了两个intent对象,但是我的代码现在在尝试启动新活动时崩溃。您将此方法称为startActivitynewIntent?在哪项活动中?