请教问题,android中,调用另外一个APK的主程序,怎么调用啊?

jomson 2010-07-07 01:50:56
我在项目中需要实现如下功能:
做个图片按钮,当点击后,调用从网下下载下的APK安装包中的主程序,不知道如何写。例如,该APK是RMaps.apk,安装后,如何在其他程序中调用他?在线等,50分。
...全文
4919 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
innerone 2011-02-23
  • 打赏
  • 举报
回复
如果不是自己写的怎么调用哪?因为关于那个程序的信息都不知道,那要怎么才可以调用哪?
qthsrs232 2011-01-08
  • 打赏
  • 举报
回复
mark for learn
jomson 2010-07-07
  • 打赏
  • 举报
回复
RMAPS是个离线地图程序 ,我已经下载了安徽省的地图。不知道在软件中应用会不会设计到版权问题?
jomson 2010-07-07
  • 打赏
  • 举报
回复
ComponentName comp = new ComponentName("com.robert.maps", "com.robert.maps.MainMapActivity");

这样写就可以了,谢谢!
znanyreason 2010-07-07
  • 打赏
  • 举报
回复
加上 mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 试试怎样
SkyGray 2010-07-07
  • 打赏
  • 举报
回复
//ComponentName comp = new ComponentName("com.robert.maps", "MainMapActivity");
ComponentName comp = new ComponentName("com.robert.maps", "com.robert.maps.MainMapActivity");
应该是这样吧。。
你可以看下,你从模拟器安装启动时,log中执行的intent,按照里面的参数写这个就好了

jomson 2010-07-07
  • 打赏
  • 举报
回复
我需要调用的APK是RMaps.apk,他的启动activity是com.robert.maps.MainMapActivity
按照二楼的兄弟的方法,我做如下更改:
1、在我的java单击事件中,更改为:
Intent mIntent = new Intent();
ComponentName comp = new ComponentName("com.robert.maps", "MainMapActivity");
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.MAIN");
// mIntent.addCategory("android.intent.category.LAUNCHER");
startActivity(mIntent);

更改后执行,报错并退出,查看日志中的报错信息如下:好像是找不到ActivityNotFoundException

I/ActivityManager( 123): Starting activity: Intent { act=android.intent.action.
MAIN cmp=com.robert.maps/MainMapActivity }
W/dalvikvm(16961): threadid=3: thread exiting with uncaught exception (group=0x4
0026268)
E/AndroidRuntime(16961): Uncaught handler: thread main exiting due to uncaught e
xception
E/AndroidRuntime(16961): android.content.ActivityNotFoundException: Unable to fi
nd explicit activity class {com.robert.maps/MainMapActivity}; have you declared
this activity in your AndroidManifest.xml?
E/AndroidRuntime(16961): at android.app.Instrumentation.checkStartActivit
yResult(Instrumentation.java:1404)
E/AndroidRuntime(16961): at android.app.Instrumentation.execStartActivity
(Instrumentation.java:1378)
E/AndroidRuntime(16961): at android.app.Activity.startActivityForResult(A
ctivity.java:2749)
E/AndroidRuntime(16961): at android.app.Activity.startActivity(Activity.j
ava:2855)
E/AndroidRuntime(16961): at com.hemi.hbt.FuncSelector$ItemClickListener.o
nItemClick(FuncSelector.java:189)
E/AndroidRuntime(16961): at android.widget.AdapterView.performItemClick(A
dapterView.java:284)
E/AndroidRuntime(16961): at android.widget.AbsListView$PerformClick.run(A
bsListView.java:1640)
E/AndroidRuntime(16961): at android.os.Handler.handleCallback(Handler.jav
a:587)
E/AndroidRuntime(16961): at android.os.Handler.dispatchMessage(Handler.ja
va:92)
E/AndroidRuntime(16961): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(16961): at android.app.ActivityThread.main(ActivityThrea
d.java:4363)
E/AndroidRuntime(16961): at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime(16961): at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime(16961): at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(16961): at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:618)
E/AndroidRuntime(16961): at dalvik.system.NativeStart.main(Native Method)

不知道以上调用是否些错了?

jomson 2010-07-07
  • 打赏
  • 举报
回复
好的,我试试
lovpro 2010-07-07
  • 打赏
  • 举报
回复
启动一个activity就是通过Intent.主程序就是有android.intent.category.LAUNCHER的activity.
知道了这个activity就可以了。
如果RMaps.apk是你自己写的,那就直接看manifest文件中的activity;
如果不是你写的,你就用上面的看LOG的方法。
Intent i = new Intent();
i.setAction("");
就可以了。
vclongking 2010-07-07
  • 打赏
  • 举报
回复
恩 , 直接启动这个APK , 用LOG抓取Activity ,然后Intent启动相应的Activity就行了。
SkyGray 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 skygray 的回复:]

Intent mIntent = new Intent();
ComponentName comp = new ComponentName(arg1,
arg2);
mIntent.setComponent(comp);
mIntent.setAction("android.intent.action.MAIN");
……
[/Quote]
mIntent.addCategory("android.intent.category.LAUNCHER")
znanyreason 2010-07-07
  • 打赏
  • 举报
回复
安装以后,手动执行这个apk, 看log中的信息,然后构造一个Intent。使用Intent可以起来。
SkyGray 2010-07-07
  • 打赏
  • 举报
回复
        Intent mIntent = new Intent();
        ComponentName comp = new ComponentName(arg1,
arg2);
        mIntent.setComponent(comp);
        mIntent.setAction("android.intent.action.MAIN");
   
        startActivity(mIntent);
arg1:package name
arg2:apk name

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧