在我的特殊情况下控制屏幕方向

时间:2013-10-24 14:30:38

标签: android android-layout android-intent android-listview

我想以编程方式发布 Google Play 应用,我知道有 2 方法可以做到这一点:

第一种方式:

final String appName = ...;
try {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+appName)));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id="+appName)));
}

上述代码启动了Google Play&打开商店中特定应用的页面。

第二种方式:

Context context = getContext();
Intent intent = context.getPackageManager().getLaunchIntentForPackage(GOOGLE_PLAY_PACKAGE_NAME);
if(intent!=null){               
    context.startActivity(intent);  
}

以上方式只需启动Go​​ogle Play应用。

由于我不关心Google Play的哪一页显示,所以无论哪种方式都适合我。 这是我的关键问题:

除了启动Google Play之外,我还想设置方向(纵向或横向)以编程方式来控制Google Play启动时的显示模式。如何通过手中的上述选项实现这一目标?

1 个答案:

答案 0 :(得分:0)

我认为你所要求的是不可能。 只有应用程序中的开发人员才能以编程方式设置屏幕方向,或者如果他提供了以意图设置方向的选项。

因此可以从具有意图的活动中设置屏幕方向。以下示例说明了可能的解决方案。

Yourcode

import android.content.pm.ActivityInfo;

public class YourClass extends Activity {

private void yourMethodToStartAnNewActivity() {
    Intent intent = null;   
    try {
        Intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+appName)));
        intent.putExtra("screenOrientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        startActivity(intent);
    } 
    catch (android.content.ActivityNotFoundException anfe) {
        Toast.makeText(this, "Google Play is not installed on your device", Toast.LENGTH_LONG).show();
    }       
}
}

要开始的活动

import android.content.pm.ActivityInfo;

public class ActivtyToStart extends Activity {

private final static int NO_SCREENORIENTATION_SET = 999;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    Bundle extras = getIntent().getExtras();
    int screenOrientation = extras.getInt("screenOrientation", NO_SCREENORIENTATION_SET);

    switch (screenOrientation) {
    case ActivtyToStart.NO_SCREENORIENTATION_SET:
        break;
    case ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE:
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        break;
    case ActivityInfo.SCREEN_ORIENTATION_PORTRAIT:
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
        break;
    }

    setContentView(R.layout.activitytoStart);
}
祝你好运!