应用程序执行另一个应用

时间:2016-05-11 00:52:39

标签: android

我想要一个应用程序来执行另一个应用程序

在设备启动时,我设置了意图过滤器。

        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>

因此,主应用程序启动。在主应用程序中,我只想执行一次应用程序

我试试这个。

主要

@Override
protected void onCreate(final Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    SharedPreference wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);
    boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
    if (isFirstRun) {
        Intent intent = getPackageManager().getLaunchIntentForPackage("another app package name");
        startActivity(intent);
        SharedPreferences.Editor editor = wmbPreference.edit();
        editor.putBoolean("FIRSTRUN, false);
        editor.commit();
    }
}

但此代码无效。也许有人知道另一种方法吗?

由于

添加

SharedPreferences wmbPreference = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
    if (isFirstRun) {
        startActivity(new Intent(getApplicationContext(), AutoUpdate.class));
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        SharedPreferences.Editor editor = preferences.edit();

        editor.putBoolean("FIRSTRUN", false);
        editor.apply();
        finish();
        }`

2 个答案:

答案 0 :(得分:0)

为了回答行动ACTION_BOOT_COMPLETED,您需要实施在清单中注册的广播接收器。您的应用程序还必须使用权限RECEIVE_BOOT_COMPLETED。

请参阅此处了解更多信息:

http://developer.android.com/reference/android/content/Intent.html#ACTION_BOOT_COMPLETED

请注意,应用程序必须至少运行一次ui元素才能使接收者能够注册此操作。

然后覆盖接收器的onReceive方法以启动应用程序。另请注意,从接收器上下文启动活动时,必须添加NEW_TASK标志。

答案 1 :(得分:0)

就我而言,我是这样做的。我没有使用android.intent.action.BOOT_COMPLETED

这是我的代码:

<强> Main.java

public class Main extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SharedPreference wmbPreference = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
        if (isFirstRun) {
            startActivity(new Intent(getApplicationContext(), Login.class));
            SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
            SharedPreferences.Editor editor = preferences.edit();

            editor.putBoolean("FIRSTRUN", false);
            editor.apply();
            finish();
        } 
    }     
}

并在 AndroidManifest

<activity
    android:name=".activities.Main"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>