resolveActivity(getPackageManager()) != null returns null



它返回null默认短信和调用应用程序,而从我的android工作室运行,但工作时与别人的,从我的android工作室它正在执行else块,如果我把startActivity(intent)没有if语句它执行

callDial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(userData.get(position).getContNum()!= null)
{
Intent callIntent = new Intent(Intent.ACTION_DIAL);
String strMobileNo = String.format("tel:%s",
userData.get(position).getContNum());
//String m = "tel: " + txtCALL.getText().toString();
/* Log.d("STR MOBILE NO : " , strMobileNo);*/
callIntent.setData(Uri.parse(strMobileNo));
//startActivity(callIntent);
if(callIntent.resolveActivity(context.getPackageManager()) != null)
context.startActivity(callIntent);
else
Log.v("ERROR : " , "Call Activity Cannot be started");
}
}
});

而在我的android工作室这块代码是执行if块,即直接调用一个没有打开默认应用程序…

callDirect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!userData.get(position).getContNum().isEmpty()) {
String mobileNo = String.format("tel: %s", userData.get(position).getContNum());
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse(mobileNo));
if (callIntent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(callIntent);
} else
Log.d("CALL ERROR ", "CALL CANNOT BE INITIATED");
}
}
});

在Android 11及以后的版本中,你需要在manifest中声明一个queries元素,这样你就可以看到其他带有resolveActivity()方法的包。参见:https://developer.android.com/training/basics/intents/package-visibility

相关内容

  • 没有找到相关文章

最新更新