从我的应用程序中打开另一个应用程序的特定活动,其中包含android

时间:2016-08-24 11:47:38

标签: android android-intent

在我的应用程序中,我需要使用intent从我的应用程序打开另一个应用程序的显式活动,并显示我的意图发送的数据,数据在大多数时间是一个URL。 例如,如果我的应用程序显示来自印度应用程序或其他新闻应用程序的一些新闻,我如何打开用用户点击的新闻重定向的特定新闻应用程序。

我正在使用Dailymotion app下面的代码:

 Intent intent = new Intent(Intent.ACTION_VIEW);
                                intent.setData(Uri.parse(newsFeedsList.get(getPosition()).getStrNewsLink()));
                                intent.setClassName(packageName, "com.dailymotion.dailymotion.mobile.activity.InterstitialActivity");
                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                                context.startActivity(intent);

工作正常,但如果我没有特定活动的班级名称怎么办? 请建议!!

3 个答案:

答案 0 :(得分:0)

是两个应用程序中使用的sharedUserId相同吗?然后使用下面的代码

Intent res = new Intent();
String mPackage = "com.your.package";
String mClass = ".actYouAreLaunching";
res.setComponent(new ComponentName(mPackage,mPackage+mClass));
startActivity(res);

从以下网址获取的代码 Android Intents: Start activity using class name from another app that has the same sharedUserId

答案 1 :(得分:0)

您要将哪些数据传递给其他应用?您可以使用:

intent.putExtra(key name, key value);

然后检索数据:

String x = intent.getExtra(key name, key value);

答案 2 :(得分:0)

您可以从其他应用的包名开始。 如果另一个应用程序正确处理它,你会得到你想要的。 例如,我在google youtube app上测试了这段代码!!!

PackageManager packageManager = getPackageManager();
    String packageName = "com.google.android.youtube";
    Intent intent = packageManager.getLaunchIntentForPackage(packageName);
    intent.setAction(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("https://www.youtube.com/user/queenofficial"));
    startActivity(intent);

如果您想在手机中安装软件包,可以使用 列出getInstalledApplications(int标志) 在PackageManager类

希望这有帮助:)