Car*_*rni 59
您应该使用包管理器的功能.
Context ctx=this; // or you can replace **'this'** with your **ActivityName.this**
try {
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet");
ctx.startActivity(i);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
}
Run Code Online (Sandbox Code Playgroud)
ste*_*ter 28
您可以直接使用包名/类,例如创建一个新的意图来调用twidroid程序,您将使用以下链接文本:
Intent intent = new Intent("com.twidroid.SendTweet");
Run Code Online (Sandbox Code Playgroud)
您可能希望在未安装应用程序时为ActivityNotFoundException设置try/catch.
Intent intent = new Intent();
intent.setClassName("package.name", "package.name.LauncherActivityName");
startActivityForResult(intent,REQUEST_CODE);
Run Code Online (Sandbox Code Playgroud)
从 SDK 30 (Android 11) 开始,您需要添加到清单中:
<queries>
<package android:name="com.app.you.need" />
</queries>
Run Code Online (Sandbox Code Playgroud)
然后是这个:
Intent intent = getApplicationContext().getPackageManager().getLaunchIntentForPackage("com.app.you.need");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我用:
try {
Intent intent = new Intent();
intent.setClassName("package.name", "<your_package_name>");
startActivity(intent);
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
但是就像卡米(Cami)所建议的那样,它也可以工作:
try {
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet");
ctx.startActivity(i);
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52429 次 |
最近记录: |