Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个应用程序调用应用程序(意图)_Java_Android - Fatal编程技术网

Java 从另一个应用程序调用应用程序(意图)

Java 从另一个应用程序调用应用程序(意图),java,android,Java,Android,你好!这里是android java上的Noob 我搜索了整个Stackoverflow,问了很多关于意图的问题。这可能是我将要做的最后一篇文章,因为我一直在StackOverFlow中充斥着关于意图的多余问题 我不想完全被填鸭式地喂饱,所以我创建了两个快速的android应用程序。一个用于主启动器,另一个用于调用应用程序。我在我的主启动器上添加了一个按钮,下面是基于本教程()的按钮代码 启动后,只要我单击按钮,应用程序就会崩溃。我不知道怎么了。我几乎已经尝试了所有推荐的答案,我认为这些答案都对

你好!这里是android java上的Noob

我搜索了整个Stackoverflow,问了很多关于意图的问题。这可能是我将要做的最后一篇文章,因为我一直在StackOverFlow中充斥着关于意图的多余问题

我不想完全被填鸭式地喂饱,所以我创建了两个快速的android应用程序。一个用于主启动器,另一个用于调用应用程序。我在我的主启动器上添加了一个按钮,下面是基于本教程()的按钮代码

启动后,只要我单击按钮,应用程序就会崩溃。我不知道怎么了。我几乎已经尝试了所有推荐的答案,我认为这些答案都对他们有用。下面是我创建的两个快速应用程序的下载链接。我不想让你完成它,因为我不会从中学到任何东西。我只是想让你们告诉我我遗漏了什么,我做错了什么,或者我对Intent函数有什么不理解

我正在为我的模拟器使用JavaEclipse和Bluestack

以下是日志:

08-26 15:22:11.197: E/dalvikvm(13823): Could not find class 'com.idd.applicationtocall.MainActivity', referenced from method com.idd.applicationtolaunch.MainActivity.ClickMe
08-26 15:22:11.197: W/dalvikvm(13823): VFY: unable to resolve const-class 1140 (Lcom/idd/applicationtocall/MainActivity;) in Lcom/idd/applicationtolaunch/MainActivity;
08-26 15:22:11.197: D/dalvikvm(13823): VFY: replacing opcode 0x1c at 0x0002
08-26 15:22:11.227: I/PGA(13823): New SOCKET connection: icationtolaunch (pid 13823, tid 13823)
08-26 15:22:14.897: D/AndroidRuntime(13823): Shutting down VM
08-26 15:22:14.897: W/dalvikvm(13823): threadid=1: thread exiting with uncaught exception (group=0xb2c00180)
08-26 15:22:14.897: I/Process(13823): Sending signal. PID: 13823 SIG: 9
08-26 15:22:14.897: D/AndroidRuntime(13823): procName from cmdline: com.idd.applicationtolaunch
08-26 15:22:14.897: E/AndroidRuntime(13823): in writeCrashedAppName, pkgName :com.idd.applicationtolaunch
08-26 15:22:14.897: D/AndroidRuntime(13823): file written successfully with content: com.idd.applicationtolaunch StringBuffer : ;com.idd.applicationtolaunch
08-26 15:22:14.897: E/AndroidRuntime(13823): FATAL EXCEPTION: main
08-26 15:22:14.897: E/AndroidRuntime(13823): java.lang.IllegalStateException: Could not execute method of the activity
08-26 15:22:14.897: E/AndroidRuntime(13823):    at android.view.View$1.onClick(View.java:3044)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at android.view.View.performClick(View.java:3511)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at android.view.View$PerformClick.run(View.java:14105)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at android.os.Handler.handleCallback(Handler.java:605)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at android.os.Looper.loop(Looper.java:137)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at android.app.ActivityThread.main(ActivityThread.java:4424)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at java.lang.reflect.Method.invokeNative(Native Method)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at java.lang.reflect.Method.invoke(Method.java:511)
08-26 15:22:14.897: E/AndroidRuntime(13823):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
08-26 15:23:39.927: E/dalvikvm(14122): Could not find class 'com.idd.applicationtocall.MainActivity', referenced from method com.idd.applicationtolaunch.MainActivity.ClickMe
08-26 15:23:39.927: W/dalvikvm(14122): VFY: unable to resolve const-class 1140 (Lcom/idd/applicationtocall/MainActivity;) in Lcom/idd/applicationtolaunch/MainActivity;
08-26 15:23:39.927: D/dalvikvm(14122): VFY: replacing opcode 0x1c at 0x0002
08-26 15:23:39.957: I/PGA(14122): New SOCKET connection: icationtolaunch (pid 14122, tid 14122)

您的日志猫说找不到活动类。这可能是因为您没有将其添加到AndroidManifest.xml中。你应该添加标签

 <activity android:name="com.idd.applicationtocall.MainActivity"></activity>


到您的应用程序启动AndroidManifest.xml。

在您的应用程序中单击以下按钮:

public void ClickMe(View v) {
    Intent intent = new Intent();
    intent.setComponent(new ComponentName("com.idd.applicationtocall","com.idd.applicationtocall.MainActivity"));
    startActivity(intent);
}
以及ApplicationCall的清单文件

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
            android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

这样我就可以工作了。

我成功地使用以下代码显式地启动了另一个应用程序的启动程序活动。我在Stack Overflow上找到了它,但我无法链接它,因为我不记得我找了什么来找到它

        if (v.getId() == R.id.main_button)
        {
            android.content.pm.PackageManager mPm = getActivity().getPackageManager();
            PackageInfo info = null;
            try
            {
                info = mPm.getPackageInfo("com.example.other.app", 0);
            }
            catch (PackageManager.NameNotFoundException e)
            {
                Log.d(this.getClass().getSimpleName(), e.getMessage() + "does not exist", e);
            }
            Boolean isAppInstalled = info != null;
            Log.i(getClass().getSimpleName(), "The package was found: " + isAppInstalled);
        }
        else if(v.getId() == R.id.main_action_button)
        {
            Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage("com.example.other.app");
            startActivity(LaunchIntent);
        }
但是,如果您需要使用特定数据显式打开特定活动,那么您可能应该指定一个自定义操作,并尝试使用该操作启动另一个应用程序


单击stacktraceDid按钮后,应用程序就会崩溃。您检查了吗?还没有。我去登记一下。谢谢提醒我。@user3793685您是否在xml布局中的按钮标记下添加了
android:onClick=“ClickMe”
。也发布了logcat异常。是的。我添加了logcat。我尝试在下面添加,但它仍然崩溃。ApplicationLaunch是第一个应该出现的表单。ApplicationCall是我单击按钮后要显示的表单。它是否应该像Intent i=newintent(这是com.idd.applicationCall.MainActivity.class);因为我正在尝试启动applicationtocall.MainActivity?-这个应用程序对我来说非常好。我不知道为什么对你不起作用。我帮不了你,因为我帮不了自己。它仍然不起作用。我以前也尝试过setComponent函数。我几乎尝试了StackOverFlow中的所有功能,但似乎都不起作用。我没有彻底检查的最后一件事是我的清单文件。是的。我试过这个组件。它在第三条评论中。我知道那个代码对你们有用。我也知道它应该对我有用。我已经为此工作了两周,但仍然没有任何进展。。。T-Ti已经编辑过了,现在对我有用了。您忘记在manifest.xml中导出ApplicationCall的活动
android:exported="true"
        if (v.getId() == R.id.main_button)
        {
            android.content.pm.PackageManager mPm = getActivity().getPackageManager();
            PackageInfo info = null;
            try
            {
                info = mPm.getPackageInfo("com.example.other.app", 0);
            }
            catch (PackageManager.NameNotFoundException e)
            {
                Log.d(this.getClass().getSimpleName(), e.getMessage() + "does not exist", e);
            }
            Boolean isAppInstalled = info != null;
            Log.i(getClass().getSimpleName(), "The package was found: " + isAppInstalled);
        }
        else if(v.getId() == R.id.main_action_button)
        {
            Intent LaunchIntent = getActivity().getPackageManager().getLaunchIntentForPackage("com.example.other.app");
            startActivity(LaunchIntent);
        }