Delphi XE7 调用外部APP activity

procedure TForm2.btn2Click(Sender: TObject);
  var
    oIntent:JIntent;
    pkg,cls:JString;
begin
  pkg := StringToJString('com.song.cleaner');
  cls := StringToJString('com.song.cleaner.CleanerActivity');
  oIntent := TJIntent.Create;
  oIntent.setAction(TJIntent.JavaClass.ACTION_VIEW); //这里可以改为 ACTION_MAIN ,但是,我不知道为什么。。。
//  oIntent.setPackage(pkg); //可有可无,
  oIntent.setClassName(pkg,cls); //调用另一个app,即调用外部app,就用setClassName
  oIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  oIntent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER); //没有该代码,一样可以正常运行。
//  oIntent.setClass(SharedActivityContext,SharedActivityContext.getClass); //如果调用自己的话,就用setClass
  SharedActivity.startActivity(oIntent);
end;

  我在模拟器第1次运行以上代码的时候,弹出  

android.content.ActivityNotFoundException: Unable to find explicit activity class

have you declared this activity in your AndroidManifest.xml

当我安装了清理大师,即com.song.cleaner_1_234459.apk 就没有错误提示了,之后,我又删除了清理大师app,错误还是没有提示,奇怪啊。。。。

 

上面的包名和类名是我用反编译工具 Androidfby 解压出来的。查看com.song.cleaner_1_234459.apk的配置文件 AndroidManifest.xml 可以获取包名,类名。

 

看这某篇文章的摘要:

Android系统中,也有一个类似注册表的东西,用来记录当前所有安装的应用的基本信息,每次系统安装
或者卸载了任何apk文件,都会更新这个文件。这个文件位于如下目录:

/data/system/packages.xml

系统在安装apk的过程中,会解析apk的AndroidManifinest.xml文件,提取出这个apk的重要信息写入到
packages.xml文件中,这些信息包括:权限、应用包名、APK的安装位置、版本、userID等等。

 

另外,关于 Delphi XE7 开发移动的案例代码真的非常少,多数都是看java的案例+理解 写出来的 -_-! 既然这样,还不如学java语言算了。。。

附上学习资源,这批资料里没有一个是Delphi的,晕

Android跨应用Activity跳转
http://blog.csdn.net/shb2058/article/details/60869339 //用到的是 setClassName

Android从一个APP跳转到另一个APP主界面
http://blog.csdn.net/hust_twj/article/details/73477454 //用到的是 ComponentName

android-Intent启动activity的几种方式-隐式Intent

http://blog.csdn.net/daiyelang/article/details/8649134

幸好盒子论坛还可以找到Delphi的案例,还有大富翁论坛

http://bbs.2ccc.com/topic.asp?topicid=474485

android.intent.category.LAUNCHER的作用

http://blog.csdn.net/dajian790626/article/details/13512499 //这篇文章有用啊。

Delphi XE6开发的AndRoid应用实现在线升级完成后自动安装apk代码(加说明) 

 http://www.dfwlt.com/forum.php?mod=viewthread&tid=445

Delphi利用系统环境变量获取常用系统目录
http://blog.csdn.net/u013408061/article/details/23592251 //10分有用,学习了。。。

posted @ 2017-08-24 14:32  stma  阅读(454)  评论(0)    收藏  举报