gpt4 book ai didi

java - 如何自定义解析推送通知以在 Android 应用程序中发送 uri?

转载 作者:行者123 更新时间:2023-11-29 09:53:16 24 4
gpt4 key购买 nike

我想在我的 android 应用程序中使用解析推送通知功能。我将我的解析推送通知代码放在我的第一个 Activity (启动 Activity )中。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import com.parse.ParseAnalytics;
import com.parse.ParseInstallation;
import com.parse.PushService;

public class SplashActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
ParseAnalytics.trackAppOpened(getIntent());

// inform the Parse Cloud that it is ready for notifications
PushService.setDefaultPushCallback(this, HomeActivity.class);
ParseInstallation.getCurrentInstallation().saveInBackground();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, HomeActivity.class);
startActivity(intent);
SplashActivity.this.finish();
}
}, 1000);
}
public void onBackPressed() {

}
}

这是我的 ParseApplication :

import com.parse.Parse;
import com.parse.ParseACL;

import com.parse.ParseUser;

import android.app.Application;

public class ParseApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

// Add your initialization code here
Parse.initialize(this, " id", "id");


ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();

// If you would like all objects to be private by default, remove this line.
defaultACL.setPublicReadAccess(true);

ParseACL.setDefaultACL(defaultACL, true);
}

}

这是我的 list :

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />

<application
android:name="ParseApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:name=".SplashActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".HomeActivity" ></activity>

<service android:name="com.parse.PushService" />

<receiver android:name="com.parse.ParseBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
</application>

现在我可以像这样使用 json 轻松地在应用程序中发送推送通知:

   {"title" : "my title",
"alert" : " my alert text",
"uri" :"http://Google.com"
}

在这里我可以很容易地得到我的标题和我的提醒,但问题是当我点击它时它根本不是我的 uri,它会转到我的家庭 Activity 。我的问题是什么?我想打开我的 uri。

最佳答案

您需要在 URI 字段中添加一个 Activity 的名称。
例如:

.SplashActivity

在我的例子中,我们有这个 list :

...
<activity
android:name=".presenter.FooActivity"
android:label="@string/title_activity_foo"
android:parentActivityName=".presenter.fooParent">
<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:scheme="myapp" android:host="host" android:path="/path" />
</intent-filter>
</activity>
...

使用 Parse 的 Push 的 json 是:

{"title" : "my title",
"alert" : " my alert text",
"uri" :"myapp://host/path"
}

如果要打开http://www.google.com您可能需要一些代码来接收 Activity 上的 Intent 并创建一个新代码以转到 URL。为此,您需要为您的 json 添加一个自定义属性以传递您需要的 url。像这样的东西:

{"title" : "my title",
"alert" : " my alert text",
"uri" :"myapp://host/path",
"customurl":"http://www.google.com"
}

和代码:

Bundle params = intent.getExtras();
if (params!=null)
{
String param = params.getString("com.parse.Data");
String url = funcThatGetsUrlFromData(param);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}

关于java - 如何自定义解析推送通知以在 Android 应用程序中发送 uri?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28529907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com