我正在开发一个Android应用程序,我在HomeActivity
创建一个快捷方式,然后从该快捷方式回到HomeActivity
。
我的问题是我想在快捷方式中发送一些网址,并希望在用户来自HomeAtivity
的快捷方式时返回该网址。
这是代码:
HomeActivity
private void addShortcut() {
Intent shortcutIntent = new Intent(getApplicationContext(),HomeActivity.class);
shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.putExtra("shortcutKey", "www.myapi.com/fromshortcut");
shortcutIntent.setAction(Intent.ACTION_MAIN);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, AppConstants.shortcutTitle);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(getApplicationContext(),R.drawable.ic_launcher));
addIntent.putExtra("duplicate", false);
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);
Toast.makeText(getApplicationContext(), AppConstants.shortcutDone, 40).show();
已成功创建快捷方式。
现在我点击快捷方式然后回到HomeActivity
并获得Intent
但是空指针异常......
String shortcutUrl = getIntent().getStringExtra("shortcutKey");
if(shortcutUrl.equals("")){
setupWebView("http://stackoverflow.com");
}
else{
Log.e("shortcut was created", "url from shortcut");
setupWebView(shortcutUrl);
}
那么我应该怎样做才能获得这些数据。提前谢谢并准备投票给正确答案。
答案 0 :(得分:0)
如果我说得对,如果是的话,您希望将网址作为数据从您的快捷方式返回到您的主页Activity
,然后使用方法Activity
开始startActivityForResult()
获取结果。
以下回调网址会以Intent
的形式返回结果。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
答案 1 :(得分:0)
首先,当您通过点击主屏幕启动您的应用时,Android会以Intent
格式
String
Intent { act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] - } // the "-" represent flags
此Intent
没有Bundle
Key
shortcutKey
这就是您拥有NPE
你的标题问题和解释让我向左倾斜&对
试试这些
1:获取Activity
的意图并通过putExtras()
将您的网址添加到其中并重新创建()Activity
。
getIntent().putExtra("key", "my url");
this.startActivity(getIntent());
this.finish(); // or instead of calling the last two do Activity.recreate()
此处的问题在onCreate()
您检查Intent.hasExtras();
是否为真,那么您有自己的网址,这意味着它已被导航到它,如果不是你没有你的网址,这意味着你在通过快捷方式让您执行逻辑(即如果您singleInstance
上没有HomeActivity
)
2:或者如果您singleInstance
上设置了Activity
,那么您可以使用Flag
检查此post,尤其是问题 - 将指导您如何使用Flag
s进行检查。
希望所有这些都是清醒和乐于助人的