Android 如何使用从服务传递的意图启动活动

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

我有一个服务,它在字符串变量中获取类名,并使用以下代码传递给SharedReferences:

    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?在哪项活动中?