如何识别用户来自 laucher 还是来自我的 Android 应用程序的快捷方式?
How to identify that a user came from laucher or from shortcut of my Android App?
我正在开发一个 android 应用程序,我从 HomeActivity
创建一个快捷方式,然后从该快捷方式返回到 HomeActivity
。
我的问题是我想在快捷方式中发送一些 url 并希望在用户从快捷方式到达 HomeAtivity
.
时取回 url
代码如下:
主页活动
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://whosebug.com");
}
else{
Log.e("shortcut was created", "url from shortcut");
setupWebView(shortcutUrl);
}
那么我应该怎么做才能提前获得数据 back.Thanks 并准备投票选出正确答案。
如果我没听错,你希望 url 作为数据从你的快捷方式返回你的家 Activity
如果是,那么开始你的 Activity
以使用方法 startActivityForResult()
.
低于回调 url 将返回结果 Intent
。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
首先,当您在主屏幕上单击以启动您的应用程序时 android 使用默认的简单 Intent
打开您的应用程序 String
格式
Intent { act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] - } // the "-" represent flags
这个 Intent
没有 Bundle
和 Key
shortcutKey
这就是为什么你有 NPE
你的标题问题和解释让我左右摇摆
试试这些
1:获取 Activity
的 Intent 并通过 putExtras()
和 reCreate() 将你的 url 放入其中 Activity
.
getIntent().putExtra("key", "my url");
this.startActivity(getIntent());
this.finish(); // or instead of calling the last two do Activity.recreate()
这里的问题在你的 onCreate()
你检查 Intent.hasExtras();
如果为真那么你有你的 url 这意味着它已经被导航到它,如果不是你没有你的url,这意味着你通过快捷方式进入,所以你执行逻辑(也就是说,如果你的 HomeActivity
上没有 singleInstance
)
2:或者如果您在 Activity
上设置了 singleInstance
,那么您可以使用 Flag
检查这个 post,尤其是问题 - 将指导您如何使用 Flag
s.
检查
希望所有这些都是清晰且有用的
我正在开发一个 android 应用程序,我从 HomeActivity
创建一个快捷方式,然后从该快捷方式返回到 HomeActivity
。
我的问题是我想在快捷方式中发送一些 url 并希望在用户从快捷方式到达 HomeAtivity
.
代码如下:
主页活动
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://whosebug.com");
}
else{
Log.e("shortcut was created", "url from shortcut");
setupWebView(shortcutUrl);
}
那么我应该怎么做才能提前获得数据 back.Thanks 并准备投票选出正确答案。
如果我没听错,你希望 url 作为数据从你的快捷方式返回你的家 Activity
如果是,那么开始你的 Activity
以使用方法 startActivityForResult()
.
低于回调 url 将返回结果 Intent
。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
首先,当您在主屏幕上单击以启动您的应用程序时 android 使用默认的简单 Intent
打开您的应用程序 String
格式
Intent { act=android.intent.action.MAIN
cat=[android.intent.category.LAUNCHER] - } // the "-" represent flags
这个 Intent
没有 Bundle
和 Key
shortcutKey
这就是为什么你有 NPE
你的标题问题和解释让我左右摇摆
试试这些
1:获取 Activity
的 Intent 并通过 putExtras()
和 reCreate() 将你的 url 放入其中 Activity
.
getIntent().putExtra("key", "my url");
this.startActivity(getIntent());
this.finish(); // or instead of calling the last two do Activity.recreate()
这里的问题在你的 onCreate()
你检查 Intent.hasExtras();
如果为真那么你有你的 url 这意味着它已经被导航到它,如果不是你没有你的url,这意味着你通过快捷方式进入,所以你执行逻辑(也就是说,如果你的 HomeActivity
上没有 singleInstance
)
2:或者如果您在 Activity
上设置了 singleInstance
,那么您可以使用 Flag
检查这个 post,尤其是问题 - 将指导您如何使用 Flag
s.
希望所有这些都是清晰且有用的