我非常擅长在Android应用中配置AndroidManifest.xml
文件,我正在构建的应用是使用带有Javascript和HTML的Phonegap,而不是本机代码。
我的Javascript代码中有一些操作,我想在每次用户“打开”应用时触发。我发现的是,“开放”的概念比我最初理解的更多。如果用户打开应用程序,然后切换到另一个应用程序,然后返回到第一个应用程序,第一个应用程序实际上仍然在后台运行,因此它没有启动。我想将其描述为“切换”回第一个应用程序会更准确。
我的问题是,我有一些Javascript,每次用户切换到我的应用程序时都会运行,无论是第一次打开它还是在后台运行。我没有做任何特定的配置来实现这一点,它似乎是默认行为。
但是,我需要执行的一些操作是基于AndroidManifest.xml
中的设置,但是如果第一次打开应用程序则执行它们,如果用户是则不是切换回当前在后台运行的应用。具体来说,我想根据用户是否通过电子邮件中的链接打开应用来执行操作,我为此设置了<intent-filter>
。
当用户从电子邮件中的链接启动我的应用时,无论应用是否已在后台运行,我都可以通过该方式进行监听吗?
我认为这可能是相关的,因此我的<activity>
中的AndroidManifest.xml
标记会“监听”通过网址启动的应用:
<activity
android:name="com.xxxxxxx.xxxxxxx.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="xxxxxxx.com"
android:scheme="http" />
<data
android:host="xxxxxxx.com"
android:scheme="https" />
</intent-filter>
</activity>
以下是onCreate()
文件中的MainActivity.java
函数:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl(Config.getStartUrl(), 3000);
adView = new AdView(this, AdSize.BANNER, AdMob_Ad_Unit);
LinearLayout layout = super.root;
layout.addView(adView);
AdRequest request = new AdRequest();
adView.loadAd(request);
}
答案 0 :(得分:1)
将其放入Launcher活动中:
//this method is called every time the Activity is Created or Re-Created
//we check for null to see if the activity was only Created instead of Recreated
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
myMethod(getIntent());
}
}
//This method will be called only when the Activity is already created and receives
//a new Intent
@Override
protected void onNewIntent(Intent it){
super.onNewIntent(it);
myMethod(it)
}
private void myMethod(Intent intent){
if(intent.getAction().equals("put here the WebIntent action string or URL as they call it"){
//your code here
}
}