Android 将值从应用程序传递到另一个应用程序

Android 将值从应用程序传递到另一个应用程序,android,Android,我有两个独立的申请。从App1中,我需要将位置/目的地传递给App2,以便在弹出窗口中显示 我尝试过意图、共享引用,甚至尝试过理解内容提供者(不太好)。似乎什么都不管用 编辑 代码使用: App1:com.myapp.rider-从rider应用发送到driver应用 Intent intent = new Intent("com.myapp.driver.Activities.DriverTracking"); intent.putExtra("destination", destinatio

我有两个独立的申请。从App1中,我需要将位置/目的地传递给App2,以便在弹出窗口中显示

我尝试过意图、共享引用,甚至尝试过理解内容提供者(不太好)。似乎什么都不管用

编辑 代码使用:

App1:com.myapp.rider-从rider应用发送到driver应用

Intent intent = new Intent("com.myapp.driver.Activities.DriverTracking");
intent.putExtra("destination", destination);
startActivity(intent);
App2:com.myapp.driver-从骑手处接收价值

Bundle bundle = getIntent().getExtras();
mDestination = (String) bundle.get("destination");
Log.d("STATUS_1", "Destination = " + mDestination);
添加到App2中的清单:

<intent-filter>
   <action android:name="com.myapp.driver.Activities.DriverTracking" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
图像

编辑 以下是错误:

05-27 14:45:12.940 21851-21851/com.myapp.rider E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myapp.rider, PID: 21851
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.rider/com.myapp.rider.Activities.RiderHome}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Intent.putExtras(android.os.Bundle)' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
    at android.app.ActivityThread.access$1100(ActivityThread.java:221)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:158)
    at android.app.ActivityThread.main(ActivityThread.java:7224)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Intent android.content.Intent.putExtras(android.os.Bundle)' on a null object reference
    at com.myapp.rider.Activities.RiderHome.sendIntent(RiderHome.java:355)

使用Intent+捆绑包+PackageManager的固定解决方案:

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.myapp.driver", "com.myapp.driver.Activities.DriverTracking"));
intent.putExtra("destination", destination);
startActivity(intent);
在第二个应用程序中的“活动”中,您需要获取捆绑值:

String destination = getIntent().getStringExtra("destination");
App1:com.myapp.rider-从rider应用发送到driver应用

Intent intent = new Intent("com.myapp.driver.Activities.DriverTracking");
intent.putExtra("destination", destination);
startActivity(intent);
您正在设置一个
意图
,该意图预期会有一些
,其中
com.myapp.driver.Activities.DriverTracking

添加到App2中的清单:


在这里,您的操作是
com.myapp.ryyde\u driver.Activities.DriverTracking
。这与您的
意图不匹配。您需要使
意图中的操作与

中的
匹配“我有两个独立的应用程序。从App1,我需要将位置/目的地传递给App2,以便它将在弹出窗口中显示为地址”——在App1中,调用
startActivity()
,指向以对话框为主题的活动(“作为地址弹出”)。将“位置/目的地”以某些
包裹形式或某些
字符串表示形式作为额外信息传递。“似乎什么都不管用”--这对任何人来说都很难帮助你,因为你没有提供详细的信息并解释你的具体症状。内容提供商是解决这个问题的简单答案。我会做一个内容提供商,但我不知道我会怎么做。我试图理解它,但它很复杂。有没有好的例子或教程?对我来说已经足够了。是的,阅读是必须的。我的错误自动完成将驱动程序更改为Ryde_驱动程序,请参见图片以显示。它们是一样的。@LizG:而且,有了这个固定的代码,您是否仍然会得到一个
ActivityNotFoundException
?如果是这样,那么您需要确定安装在您的测试设备上的应用程序2是否具有修订版的
,以及修订版的
@LizG:这是一个单独的问题,源于
RiderHome
类中的某些错误。检查
RiderHome
的第355行,并尝试确定如何触发
NullPointerException
。如果您无法确定这一点,请使用一个新的(例如,Java堆栈跟踪,加上该堆栈跟踪中引用的代码)询问单独的堆栈溢出问题。它引用的代码是意图-第355行指向以下意图中的“intent.putExtras(b);”:String secondAppActivityName=“com.devhopes.ryyde_driver.Activities.DriverTracking”;Intent Intent=getPackageManager().getLaunchIntentForPackage(secondAppActivityName);Bundle b=new Bundle();b.putString(“目的地”,目的地);Intent.putExtras(b);if(Intent!=null)startActivity(Intent);@LizG:
getLaunchIntentForPackage(secondAppActivityName)
正在返回
null
。该方法不使用活动名称作为参数。它使用包名称(即,如果未在
build.gradle
中重写,则从
build.gradle
中选择您的
应用程序ID
,或从清单中选择您的
)。我尝试了上面的代码…并在指向意图的RiderApp上获得了此错误-原因:java.lang.NullPointerException:尝试调用虚拟方法“android.content.Intent android.content.Intent.putExtra(java.lang.String,java.lang.String)'在空对象引用OK上,所以发布错误日志。但我认为
com.myapp.driver.Activities.DriverTracking
是第二个应用中活动类的路径,不是吗?如果不是,请将该活动类名与完整路径+包名一起传递给他们。是的,我尝试发送值的活动是'com.myapp.driver.Activities。DriverTracking@LizG我自定义了答案,检查它从修订版中获得此错误:原因:android.content.ActivityNotFoundException:找不到显式活动类{com.myapp.driver/com.myapp.driver.Activities.DriverTracking};您是否在AndroidManifest.xml中声明了此活动?