我的Android应用程序存储了一些将在稍后发布的外部应用程序的活动名称。
示例:"com.companyname.app.ActivityName“
应用程序名和图标必须从这个字符串中检索。
我正在使用这样的代码:
intent=new Intent("com.companyname.app.ActivityName");
label=packageManager.getApplicationLabel(packageManager.getApplicationInfo(intent.getPackage(),0)).toString();
icon=packageManager.getApplicationIcon(packageManager.getApplicationInfo(intent.getPackage(),0));但是,这一意图似乎没有得到很好的表达,或者说明是错误的。
如何获得所请求的值?
发布于 2016-05-12 22:47:16
仅使用活动类名并不足以明确地标识它。您还需要有相应的包名。然后您可以创建一个ComponentName,并创建启动此活动的意图。
Intent intent = new Intent(action).setComponent(new ComponentName(pkg, cls));使用相同的组件名称和包管理器的getActivityInfo(),您还可以访问ActivityInfo并获取活动本身的标签和图标。
但是在您的示例中,您使用意图(字符串)构造函数来定义要启动的"com.companyname.app.ActivityName"操作。
发布于 2016-05-12 22:33:47
Intent构造函数设置Intent的操作。它目前没有软件包。我只会存储目标应用程序的包名,并使用它来获取有关该应用程序的信息。
String packageName = ...;
try {
    String label = packageManager.getApplicationLabel(packageName);
    Drawable icon = packageManager.getApplicationIcon(packageName);
    // etc.
} catch (NameNotFoundException e) {
    Log.e(TAG, "Couldn't get info for package " + packageName);
}如果您随后需要启动该应用程序,请使用packageManager.getLaunchIntentForPackage(...)获得一个Intent。
发布于 2016-05-13 05:57:02
<activity
  android:name=".ui.HomeActivity"
  android:label="@string/title_home_activity"
  android:icon="@drawable/icon">
  <intent-filter android:label="@string/app_name">
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>https://stackoverflow.com/questions/37198383
复制相似问题