首页 > 解决方案 > 需要从字符串源打开意图

问题描述

我在这里面临挑战。我创建了一个列表(在 listView 中),当我选择一个(该列表的)项目时,它返回一个字符串。我需要用这个字符串打开一个新屏幕。

让我尝试解释一下:此列表包含以下内容(此处仅显示一小部分):

"ACTION_SETTINGS", "ACTION_SHOW_REGULATORY_INFO", "ACTION_SOUND_SETTINGS", "ACTION_STORAGE_VOLUME_ACCESS_SETTINGS", "ACTION_APPLICATION_DETAILS_SETTINGS",
"ACTION_SYNC_SETTINGS", "ACTION_USAGE_ACCESS_SETTINGS", "ACTION_USER_DICTIONARY_SETTINGS"  blablabla...

实际上像上述选项一样有一百多个选项。这些选项是特定的配置选项。因此,当我单击其中一个选项时,它应该打开“特定配置屏幕”。

如果我这样做它可以工作,但我想要的是从列表中选择而不是这样:

Intent intent = new Intent(android.provider.Settings.ACTION_SOUND_SETTINGS);
startActivity(intent);

// 以上是执行此操作的“静态”方式(但有效)

我想要的是一种“动态”的方式来做到这一点。

就像是:

String novaTela = "android.provider.Settings."  + listaConf.getItemAtPosition( i ).toString();
// above listaConf is my ListView
Intent intent = new Intent(novaTela);

我已经尝试解析但从未工作过。像这样的东西:

Intent intent = Intent.parseIntent(sIntent); // I don't know it is possible

如果我使用这样的“固定参数”:

Intent intent = new Intent(android.provider.Settings.ACTION_SOUND_SETTINGS);
startActivity(intent); 

那行得通...但是如果我尝试这样的“动态”方式:

    String novaTela = "android.provider.Settings." + listaConf.getItemAtPosition( i ).toString(); 
Intent intent = new Intent(novaTela);

我收到一个错误:

未找到处理 Intent
{act=android.provider.Settings.ACTION_SOUND_OPTIONS}的活动

有人可以帮我吗?

标签: javaandroidandroid-studio

解决方案


实际上你从这条线上得到了什么

String setting = android.provider.Settings.ACTION_SETTINGS;

"android.settings.SETTINGS"

直接传入就可以了Intent

Intent intent = new Intent("android.settings.SETTINGS");
startActivity(intent);

所以这应该可以解决您的问题:

String novaTela = listaConf.getItemAtPosition( i ).toString().replace("ACTION_","android.settings."); 
Intent intent = new Intent(novaTela);

推荐阅读