最新消息:20210917 已从crifan.com换到crifan.org

【未解决】Android项目rcsjta中如何才能运行到rcs的core的service

Android crifan 510浏览 0评论
折腾:
【未解决】rcsjta的RI启动报错:Cannot connect service API Failed to get result for com.gsma.services.rcs.action.GET_SERVICE_STARTING_STATE
期间,要去搞清楚,到底如何才能运行到rcs的core的service。
先调试Core
结果:
startCore和Core
都没运行到。。。
再去调试RI
结果也没启动。。。
那去找找代码哪里调用了:
【记录】研究Android项目rcsjta中RCS的core的service启动的代码调用逻辑关系和顺序
然后去:
【未解决】调试运行Android项目rcsjta的其他几个apk看看是否启动了rcs的core的service
所以看来只能继续研究代码,看看到底是哪些地方,最初调用启动rcs的core的service的
先去:
【已解决】Android中context的startService对应的service运行机制
清楚了:
哪里调用了:
类似于:
context.startService(new Intent(context, RcsCoreService.class));
这种,去启动了RcsCoreService
RcsCoreService内部就会调用:onCreate
其中就会去:startCore
其中会:Core.createCore
最终会:new Core(
回头继续找找还有哪里调用了RcsCoreService
很多地方有类似于:tryLaunchRcsCoreService
内部都是用的:
LauncherUtils.launchRcsCoreService(context, mRcsSettings);
LauncherUtils.launchRcsCoreService(mCtx, mRcsSettings);
那去给多个
LauncherUtils.launchRcsCoreService
的地方加上断点。
然后再去尝试运行所有可供调试的apk:
看看是否能运行到断点。
运行了一部分,都没有运行到断点。
另外去试试:
【未解决】通过Android Studio打开调试设置Java Exception Breakpoints和Exception Breakpoints看看能否找到rcsjta中rcs的core的service如何启动的逻辑
目前只能继续通过代码去找逻辑了。
期间去:
receiver com.gsma.rcs.service.DeviceBoot
竟然还真的能搜到一些资料
RCS-Device-API-1-5-spec-V2-0.pdf
RCS now available on TMobile 7 Pro – Pg. 4 | OnePlus 7 Pro
RCS now available on TMobile 7 Pro – Pg. 5 | OnePlus 7 Pro
        <receiver android:name="com.gsma.rcs.service.DeviceBoot">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
明显是:和此处代码一样,是拷贝了此处代码
RCS now available on TMobile 7 Pro | OnePlus 7 Pro
RCS在别的手机TMobile 7上可用了:
继续找代码
去研究看看
android AndroidManifest.xml service
<service>  |  Android 开发者  |  Android Developers
android:name
实现服务的 Service 子类的名称。此名称应为完全限定类名称(例如“com.example.project.RoomService”)。不过,为简便起见,如果名称的第一个字符是句点(例如,“.RoomService”),则名称将追加至 <manifest> 元素中指定的软件包名称。
一旦发布应用,即不应更改该名称(除非您设置了 android:exported="false")。
没有默认值。必须指定该名称。
没有说:一定要启动
因为此处:
<!-- Startup service -->
<service android:name="com.gsma.rcs.service.StartService"/>
没有其他启动方面的参数
比如:
android:enabled
系统是否可实例化服务 —“true”表示可以,“false”表示不可以。默认值为“true”。
<application> 元素拥有自己的 enabled 属性,该属性适用于所有应用组件,包括服务。只有在 <application> 和 <service> 属性都为“true”(因为它们都默认使用该值)时,系统才能启用服务。任何一项为“false”都会造成服务停用,从而使系统无法将其实例化。
AndroidManifest.xml文件详解(service)_FireOfStar的专栏-CSDN博客_android:enabled=true
android manifest.xml配置文件中的 Service节点_kent_kent_kent的专栏-CSDN博客_androidservicemanifest
Android学习笔记之AndroidManifest.xml文件解析 – 皮狼 – 博客园
确定了,不是xml中加了service就表示自动启动服务的
想起来,去给core下面的各个文件,多加点断点,看看是否能运行到,还是不行。
换其他的settings,RI试试,问题依旧。
期间再去研究:
【记录】研究rcsjta的几个apk的运行现象尝试搞懂rcs的core的service服务相关逻辑
另外顺带去SO中搜搜看
rcs android
Did I need server for “android-rcs-ims-stack”? – Stack Overflow
sms – How to read RCS messages from android device programmatically – Stack Overflow
Skeleton implementation of RCS APIs (I20897946) · Gerrit Code Review
Skeleton implementation of RCS APIs
This change adds the classes for RCS Storage APIs. There
is no business logic implemented yet, and the parcelable boilerplate
code doesn’t really do anything.
This was needed as these APIs are meant to be interconnected, i.e. to
use an RcsPart, the app developer will need an RcsMessage, and for
that they will need the RcsThread etc.
…/RcsThreadQueryHelper.java · Gerrit Code Review
class RcsThreadQueryHelper {
    static final String ASCENDING = "ASCENDING";
    static final String DESCENDING = "DESCENDING";
    static final String THREAD_ID = "_id";
    static final Uri THREADS_URI = Uri.parse("content://rcs/thread");
    static final Uri PARTICIPANTS_URI = Uri.parse("content://rcs/participant");
    static final String[] THREAD_PROJECTION = new String[]{THREAD_ID};
    static String buildWhereClause(RcsThreadQueryParameters queryParameters) {
        // TODO - implement
        return null;
    }
}
别人
Can Android RCS client can be developed with out SIM Card – Stack Overflow
也用到了:
android-rcs-ims-stack – Google Code Archive
https://code.google.com/archive/p/android-rcs-ims-stack/
不过其是13年开始去用的。。太早了。也早就过期了。
is RCS permission in Android still signature level in 2020 ? (samsung/google) – Stack Overflow
Android: RCS ContentObserver permissions on Galaxy devices – Stack Overflow
sms – RCS Helloworld using real devices and carriers – Stack Overflow
How does SMS work (with Android devices)? – Stack Overflow
Android – Listen For Incoming SMS Messages – Stack Overflow
继续去研究,现在感觉是:
好像是应该属于core本身的代码的逻辑,需要研究透,才可能会找到为何没启动的原因
所以去:
【未解决】rcsjta中研究RCS的core的Service本身相关代码以希望找到为何没启动的原因

转载请注明:在路上 » 【未解决】Android项目rcsjta中如何才能运行到rcs的core的service

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.189 seconds, using 23.37MB memory