我有与parse.com相关的应用程序。我需要发送通知(message + url)并在我的webview应用程序中打开它。我用广播接收器接收通知。 我当前的版本打开在MainActivity中声明的主页,但我想打开通知中发送的链接。
这是我的代码:
JSON: { "警告":" Nowy发布!", "行动":" http://google.com" }
部分来自MANIFEST:
公共类MyCustomReceiver扩展了BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
String action = intent.getAction();
String channel = intent.getExtras().getString("com.parse.Channel");
JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data"));
String url = json.getString("action");
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
context.getApplicationContext().startActivity(i);
} catch (JSONException e) {
Log.d(TAG, "JSONException: " + e.getMessage());
}
}
}
答案 0 :(得分:1)
我正在使用类似的实现工作。
将JSON编码为:
{ "action": "your.package.name.UPDATE_STATUS", "url": "http://google.com" }
确保您的AndroidManifest具有:
<receiver android:name="your.package.name.MyCustomReceiver" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="your.package.name.UPDATE_STATUS" />
</intent-filter>
</receiver>
然后获取String url:
JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data"));
String myURL = json.getString("url");
请勿忘记更改 your.package.name 以匹配您的应用。
答案 1 :(得分:0)
这个简单的实现,对我来说很完美:
Json格式:
{ "alert": "Awesome Web site !", "url": "http://stackoverflow.com" }
在我的BroadcastReceiver中:
Bundle extras = intent.getExtras();
String jsonData = extras.getString( "com.parse.Data" );
try{
JSONObject json = new JSONObject(jsonData);
String url = json.getString("url");
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
viewIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(viewIntent);
}catch(JsonException e){
.....
}