sto*_*986 27 android android-activity
有没有办法检查并查看您的设备上是否存在活动?如果我有YouTube视频链接,我想在YouTube PlayerActivity中指定它.但是,如果由于某种原因他们没有它,我不想崩溃.
有没有办法检查并查看活动是否存在?我不认为我可以捕获运行时异常,因为startActivity()不会抛出它.
Sam*_*muh 77
您可以使用必要的组件信息创建一个Intent对象,然后检查intent是否可调用.我在这里偶然发现了这个片段,没有指向实际线程的链接.
private boolean isCallable(Intent intent) {
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
Run Code Online (Sandbox Code Playgroud)
Mal*_*olm 22
这是最简单的方法:
boolean activityExists = intent.resolveActivityInfo(getPackageManager(), 0) != null;
Run Code Online (Sandbox Code Playgroud)
这也是Google推荐的一个:
要首先验证应用程序是否存在以接收意图,请调用
resolveActivity()
Intent对象.如果结果为非null,则至少有一个应用程序可以处理意图,并且可以安全地调用startActivity()
.如果结果为null,则不应使用intent,如果可能,应禁用调用intent的功能.
小智 7
我最终做了:
Intent intent = new Intent();
intent.setClassName( "com.google.android.gsf", "com.google.android.gsf.login.AccountIntroActivity" );
if(getContext().getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {
getContext().startActivity( intent );
} else {
getContext().startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));
}
Run Code Online (Sandbox Code Playgroud)
这可以确保特定于Google的添加帐户意图存在,如果不存在,则可以使用一般更通用的ACTION_ADD_ACCOUNTS.
我认为我无法捕获运行时异常
实际上,这是有效的:
try {
startActivity(new Intent(..));
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "Not installed.", LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22171 次 |
最近记录: |