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

How to launch Activity using intent which passed from Service

我有一个 Service,它在字符串变量中获取一个 class 名称,并使用以下代码传递给 sharedpreferences:

    settings.edit().putString("class", activityClass).commit();

`

该服务然后启动我的密码提示 activity,它需要读取字符串并启动存储在其中的 activity。

     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) {
       }

然而,预期的 activity 并未按预期启动

你可以试试这个,

  1. 如果此 activity 在您的应用中 获取完全限定的 Activity class 名称并将其放入 intent extra 中,如下所示,

        Intent newIntent= new Intent(Passprompt.this, Class.forName("your activity class name"))); 
        newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(newIntent);
    
  2. 如果这是 activity 在另一个应用程序中

     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.setComponent(new ComponentName("packagename", "packagename.launh_activity_name")); 
     startActivity(intent);