如何禁用特定代码段的api级别检查

时间:2014-03-03 21:24:41

标签: android

如何禁用给出以下错误的特定代码行的api级别检查:

Call requires API level 14 (current min is 11): android.view.MenuItem#getActionProvider

这是错误 getActionProvider

的地方
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_server_status, menu);
    MenuItem item = menu.findItem(R.id.menu_item_share);
    if(android.os.Build.VERSION.SDK_INT >= 14) {
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();
    // Create the share Intent
    String playStoreLink = "https://play.google.com/store/apps/details?id=" +
        getPackageName();
    String yourShareText = "Install this app " + playStoreLink;
    Intent shareIntent = ShareCompat.IntentBuilder.from(this)
        .setType("text/plain").setText(yourShareText).getIntent();
    // Set the share Intent
    mShareActionProvider.setShareIntent(shareIntent);
    }
    return true;
}

这是一个适用于所有API 11+的菜单,如果它是14+,那么分享按钮应该正常工作,否则我会从菜单中隐藏该按钮,甚至加载另一个菜单。

我尝试使用 @TargetApi ,但是当我这样做时,我尝试创建另一个onCreateOptionsMenu但是即使我使用 @TargetApi <也无法创建两个具有相同名称的函数/强>

更好的是有一个与API 11 +一起使用的共享按钮吗?

1 个答案:

答案 0 :(得分:1)

  

我尝试使用@TargetApi

这是正确的答案。

  

当我这样做时,我试图创建另一个onCreateOptionsMenu

您不需要其他onCreateOptionsMenu()方法。

  

更好的是有一个与API 11 +一起使用的共享按钮吗?

android.widget.ShareActionProvider适用于API Level 14+。 android.support.v4.view.ShareActionProvider适用于API Level 4+,如果使用AppCompat操作栏后台。

请注意,几乎没有设备运行API Level 11-13,所以担心11在今天并不特别重要。