[英]Why does intent.resolveActivity(getPackageManager()) return null even though there is Activity to handle it?
[英]resolveActivity(getPackageManager()) != null returns null
它返回 null 用於默認短信並在從我的 android 工作室運行時調用應用程序,但是在與其他人的工作室一起執行時工作,從我的 android 工作室(它正在執行沒有 else start if 語句並執行 if IActivity)
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 及更高版本上,您需要在清單中聲明一個queries
元素,以便使用resolveActivity()
等方法對其他包具有可見性。 請參閱: https://developer.android.com/training/basics/intents/package-visibility
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.