折腾:
【未解决】Android Studio中用PreferenceFragmentCompat实现rcsjta的tts的参数设置页面
期间,结果由于把
RCS/rcsjta/samples/api/tts/build.gradle
implementation 'com.android.support:support-v4:25.0.1'
改为了:
implementation 'com.android.support:preference-v7:26.+'
导致又出现新警告
rcsjta/libs/api_cnx/src/main/java/com/gsma/rcs/api/connection/utils/RcsListActivity.java:166: 警告: [deprecation] android.app中的ProgressDialog已过时 public ProgressDialog showProgressDialog(String msg) { ^

代码是:
src/main/java/com/gsma/rcs/api/connection/utils/RcsListActivity.java
@Override public ProgressDialog showProgressDialog(String msg) { return DialogUtil.showProgressDialog(this, msg); }
android.app中的ProgressDialog已过时
android.app.progressdialog deprecated
在API level 26 中,ProgressDialog被声明不赞成使用,应使用的替代方法是ProgressBar
android — 不推荐使用ProgressDialog。使用的替代方法是什么?
https://www.it-swarm.dev/zh/android/不推荐使用progressdialog%E3%80%82使用的替代方法是什么?/833164383/
此处修改起来很麻烦的样子啊
因为此处代码:showProgressDialog 被多处调用了:

且调用地方是
src/com/gsma/rcs/ri/extension/messaging/MessagingSessionView.java
private void showProgressDialog() { mProgressDialog = showProgressDialog(getString(R.string.label_command_in_progress)); mProgressDialog.setOnCancelListener(new OnCancelListener() { public void onCancel(DialogInterface dialog) { Toast.makeText(MessagingSessionView.this, getString(R.string.label_session_canceled), Toast.LENGTH_SHORT).show(); quitSession(); } }); } private void hideProgressDialog() { if (mProgressDialog != null && mProgressDialog.isShowing()) { mProgressDialog.dismiss(); mProgressDialog = null; } }
还继续用到了mProgressDialog
此处,除了要实现之前的ProgressDialog
还要实现对应的setOnCancelListener之类的逻辑才可以。。
先去搜索:
Android ProgressBar setOnCancelListener
ProgressBar | Android 开发者 | Android Developers
另外代码中
src/com/gsma/rcs/ri/extension/messaging/MessagingSessionView.java
private void hideProgressDialog() { if (mProgressDialog != null && mProgressDialog.isShowing()) { mProgressDialog.dismiss(); mProgressDialog = null; } }
的
isShowing
找了下,发现是:
android.app.Dialog
如果换成ProgressBar
估计还好办
可以改为:
参考
的setVisibility
以为有visibility相关的api
竟然找不到
android ProgressBar visibility
if (someProgressBar.getVisibility() == View.GONE) { someProgressBar.setVisibility(View.VISIBLE); } else { someProgressBar.setVisibility(View.GONE); }
所以对于此处的 ProgressBar 连setVisibility 都没有
不过突然想起来了:
估计是父类有
去找找
果然是的:
除了:
void setVisibility(int visibility) Set the visibility state of this view.
也有getVisibility:
int getVisibility() Returns the visibility status for this view. getVisibility Added in API level 1 public int getVisibility () Returns the visibility status for this view. Related XML Attributes: android:visibility Returns int One of VISIBLE, INVISIBLE, or GONE. Value is VISIBLE, INVISIBLE, or GONE
总之:
之前的ProgressDialog的isShowing
可以改为ProgressBar的getVisibility是否是View.GONE(或INVISIBLE?)
但是对于setOnCancelListener去找找是否有相关替代的
android setOnCancelListener
看来是针对于Dialog才有的接口
而对于ProgressBar 没有cancel相关逻辑和接口
此处暂且不继续了,先回头看看
【未解决】rcsjta的RI启动报错:Cannot connect service API Failed to get result for com.gsma.services.rcs.action.GET_SERVICE_STARTING_STATE
能否解决掉。
如果解决掉。就不用继续花时间解决api兼容性问题了。
转载请注明:在路上 » 【未解决】Android项目rcsjta的子项目api_cnx编译报错:android.app中的ProgressDialog已过时