android下调用隐藏源码的问题

本文探讨了在Android开发中尝试从一个应用程序调用另一个应用程序内部类的问题。作者通过实验发现不能直接调用其他应用的类,并分享了一种可行的替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做完android源码编译以后,就开始了自己的一个项目,名叫AutoAnswer。
以下是测试调用其他应用程序里的类进行的试验:

--############//实验调用packages/apps/Phone下的类#############----------------
import android.app.Activity;
import android.os.Bundle;
import com.android.phone.PhoneApp;

public class AutoAnswer extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PhoneApp m = new PhoneApp();//这个是packages/apps/Phone下的类
}
}
 
wangzi6hao@wangzi6hao-desktop:~/android$ make AutoAnswer
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=1.6
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=Donut
============================================
build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'
Header: out/target/product/generic/obj/include/libpv/getactualaacconfig.h
target Java: AutoAnswer (out/target/common/obj/APPS/AutoAnswer_intermediates/classes)
packages/apps/AutoAnswer/src/com/mythlink/autoanswer/AutoAnswer.java:5: 软件包 com.android.phone 不存在
import com.android.phone.PhoneApp;
^
packages/apps/AutoAnswer/src/com/mythlink/autoanswer/AutoAnswer.java:13: 找不到符号
符号: 类 PhoneApp
位置: 类 com.mythlink.autoanswer.AutoAnswer
PhoneApp m = new PhoneApp();
^
packages/apps/AutoAnswer/src/com/mythlink/autoanswer/AutoAnswer.java:13: 找不到符号
符号: 类 PhoneApp
位置: 类 com.mythlink.autoanswer.AutoAnswer
PhoneApp m = new PhoneApp();
^
3 错误
make: *** [out/target/common/obj/APPS/AutoAnswer_intermediates/classes-full-debug.jar] Error 41

 --############//实验调用packages/apps/Phone下的类#############----------------


注:AutoAnswer是我自己在/packages/apps/AutuAnswer是我自己写的一个应用程序。
这是本人调用了/android/packages/apps/Phone/src下的一个PhoneApp类,原意是想得到打和接电话的方法,不用自己 重写就可以直接调用了。却发现怎么编译也不能通过,提示意思是找不到包,找不到类,根本就无法编译。既然如此就尝试改成以下方法:

import android.app.Activity;
import android.os.Bundle;
import android.provider.Calendar;//这个是android系统隐藏类

public class AutoAnswer extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Calendar c = new Calendar();
}
}

 进入android源码根目录
使用make AutoAnswer可以通过了。。。
相当的郁闷,原来不可以调用其它apps应用程序里的包和类,顶多开发了frmaework下,的隐藏类。看来,还是得把phone下的代码理顺,进行重写了。要不就是把相关的类导入我的包里来,更改相应方法以符合我的需要了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值