2011-05-18 100 views
6

我的应用程序严重依赖数据库的数据,有时数据库将不会正确复制,损坏,或只是抛出一个通用的strop。清除应用程序数据,然后重新打开应用程序似乎工作正常,但要求我的用户挖掘设置页面是一件相当麻烦的事情,而且我正在寻找一种快速进入应用程序详细信息页面的方法(它显示卸载,移动到SD,清除数据等)意图的应用程序的详细信息页面

我找到了Settings.ACTION_APPLICATION_DETAILS_SETTINGS意向操作,但得到一个ActivityNotFoundException,当我尝试按照我的Desire Z上描述启动它。任何人都可以帮助我如何正确地排序?

感谢

编辑:正如在回答指出,这仅仅是API9及以上的代码,如果有人想它下面是我现在用的。相信它适用于API3及更高版本。

try { 

    Intent i = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
    i.addCategory(Intent.CATEGORY_DEFAULT); 
    i.setData(Uri.parse("package:com.espian.formulae")); 
    startActivity(i); 

} catch (ActivityNotFoundException ex) { 

    Intent i = new Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS); 
    i.addCategory(Intent.CATEGORY_DEFAULT); 
    startActivity(i); 

} 
+5

这一意图仅作为API等级9(2.3)的。你的Desire Z已安装2.3吗? – jlindenbaum 2011-05-18 13:53:38

+0

不,它没有意识到它是一个级别9. :(这真的很烦人,但无论如何感谢! – 2011-05-18 14:11:59

回答

1

我会在这里发布它作为答案,除了我的评论。该意图仅适用于API级别9(2.3)。欲望Z没有2.3 ...尚未。 ;)

10

我知道这是太迟了答案,但它可能有助于某人。基于平台(froyo)的源代码,我创建了一个打开特定软件包设置页面的函数。它在模拟器中工作,但我从来没有尝试过一个真正的设备。我不知道它是否也适用于API < 8。

这就是:

public boolean startFroyoInstalledAppDetailsActivity(String packagename) { 
    boolean result = false; 

    Intent i = new Intent(); 
    i.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); 
    i.setAction(Intent.ACTION_VIEW); 
    i.putExtra("pkg", packagename); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    try { 
     cx.startActivity(i); 
     result = true; 
    } catch (Exception ex) { 
     result = false; 
    } 

    return result; 
} 

基于您的代码我也做姜饼版本,它与API级别上真实设备的工作原理9,10,11,12,13,14和15,但也可以是从API 8安全地调用,但在这种情况下,它将返回false。

这就是:

public boolean startGingerbreadInstalledAppDetailsActivity(String packagename) { 
    boolean result = false; 

    Intent i = new Intent(); 
    i.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); 
    i.addCategory(Intent.CATEGORY_DEFAULT); 
    i.setData(Uri.parse("package:" + packagename)); 
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    try { 
     cx.startActivity(i); 
     result = true; 
    } catch (Exception ex) { 
     result = false; 
    } 

    return result; 
} 
+0

什么关于API 17.18 ??? – 2013-10-09 05:33:43

+0

第二个代码块是你想要的,如果API级别高于8. – Diederik 2015-02-16 13:44:28

+0

它的工作。Thx! – tim4dev 2017-09-05 19:15:53

相关问题