我想要一个应用程序来执行另一个应用程序
在设备启动时,我设置了意图过滤器。
<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();
}`
答案 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>