【问题标题】:Get package name from Intent从 Intent 获取包名
【发布时间】:2015-12-08 00:54:59
【问题描述】:

我正在尝试获取默认 android 时钟(库存时钟)的包名称。

这是我用来打开股票时钟的意图。

Intent i = new Intent(AlarmClock.ACTION_SHOW_ALARMS);

我试过了

i.getPackage();

但这会返回 null。有没有办法在任何手机中获取android中默认时钟的包名?

【问题讨论】:

  • 为什么需要它?无论如何都要看到这个答案:stackoverflow.com/a/4281243/4059697
  • 我目前正在使用它,但这不是一个强大的解决方案。有一些电话不在该列表中。 - 即使这样,也应该有办法从意图中获取正在打开的包的名称,对吧?

标签: android clock


【解决方案1】:

但这会返回 null

那是因为你没有在Intent中设置包名。

有没有办法在任何手机中获取android中默认时钟的包名?

并非如此,因为 Android 中没有“默认时钟”的概念。

但是,您可以使用PackageManagerqueryIntentActivities() 来查看哪些活动会响应您构建的Intent

【讨论】:

  • ^ 仍然不是很有帮助。 List<ResolveInfo> infos = getPackageManager().queryIntentActivities(new Intent(AlarmClock.ACTION_SHOW_ALARMS), 0); 打印 resolvepackagename 返回 null。 activityinfo 返回的东西也无济于事。
【解决方案2】:

希望对您有所帮助:

final PackageManager packageManager = this.getPackageManager();
Intent intent = new Intent(AlarmClock.ACTION_SHOW_ALARMS);
List<ResolveInfo> packages = packageManager.queryIntentActivities(intent,0);
    for(ResolveInfo res : packages){

        String package_name = res.activityInfo.packageName;
        Log.w("Package Name: ",package_name);

    }

【讨论】:

    猜你喜欢
    • 2015-08-24
    • 2011-08-21
    • 2021-12-13
    • 2014-07-22
    • 1970-01-01
    • 2013-01-01
    • 2012-09-21
    • 2014-07-06
    • 1970-01-01
    相关资源
    最近更新 更多