对非内置应用程序的隐含意图

时间:2015-08-02 04:29:53

标签: android android-intent panoramas

我是Android开发的新手。 我需要构建一个简单的应用程序,在按下按钮后调用另一个应用程序。

更清楚地说明事情。 我需要按下按钮来调用打开全景捕捉应用程序的意图。 我是我的案例360 panorama

但是,当我提到this文档时,它说我们必须验证该应用是否具有接收意图。我不明白该怎么做。

此外,如果这是可能的..那就是打开360全景,是否有可能一旦我点击我的应用程序中的按钮,捕捉就会自动开始,而不会实际按下360全景中的捕捉按钮?

2 个答案:

答案 0 :(得分:1)

要检查设备上安装的活动是否可以接收意图,请使用以下内容:

if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }   else  {
        Log.d(TAG, "No activity available to handle Intent.");
    }

答案 1 :(得分:0)

  

我需要按下按钮来调用打开全景图的意图   捕获应用程序我的情况是360全景。

是的,这是可能的。您显然可以打开任何您想要提供的应用程序,您知道它的包名称。在这种情况下,您必须知道360全景应用程序的包名称。所以这很有可能。

你可以这样做,

final Intent intentDeviceTest = new Intent("android.intent.action.MAIN");                
intentDeviceTest.setComponent(new ComponentName("fm.last.android","fm.last.android.LastFm"));
startActivity(intentDeviceTest);

这将打开lastfm应用程序。确保您将其包围在 try / catch块中,并检查ActivityNotFoundException以确保您的应用不会崩溃;如果未安装第三方应用,则会崩溃。

  

那就是打开360全景,我点击后也可能   我的应用程序中的按钮,捕获自动开始没有   实际按下360 Panorama中的捕捉按钮?

可能性仅取决于第三方应用程序,在这种情况下是360全景图。

它必须能够接收Intent并自动开始捕获并将捕获的图像发送到您onActivityResult()方法中的应用程序。请务必使用startActivityForResult()代替startActivity()

这不在你的掌控之中。简单的答案是,如果第三方应用允许这样做,你肯定可以做到,如果没有,那么就没有办法将第三方应用用于此目的。