2

我想以编程方式启动Google Play应用程序,我知道有两种方法可以做到:

第一种方式:

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);  
}

上述方式只需启动 Google Play 应用程序。

因为我不在乎只要启动它就会显示 Google Play 的哪个页面,所以任何一种方式对我来说都很好。我的关键问题来了:

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

4

1 回答 1

0

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

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

你的代码

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);
}

祝你好运!

于 2013-11-01T19:33:11.437 回答