然后就可以通过下面的代码直接打开
Intent intent=new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
//第一个参数是包名,第二个参数是类名
ComponentName cn=new ComponentName("com.example.kingwen.num2application","com.example.kingwen.num2application.MainActivity");
intent.setComponent(cn);
startActivity(intent);
注意,如果说转到的第二个界面并不是最开始的界面,就是说不是用infilter声明的activity的话
,需要在新打开的界面中设置,这样就可以直接打开
<activity android:name=".SecondActivity"
android:exported="true"
></activity>
2)当我们不知道这个包名和类名的时候,我们可以通过包名来获得我们的启动的意图
Intent CameraIntent =getPackageManager().getLaunchIntentForPackage(pack[2]);
if(CameraIntent==null){
Toast.makeText(getApplicationContext(),"hello",Toast.LENGTH_SHORT).show();
GoToMarket(getApplicationContext(),pack[2]);
}else{
startActivity(CameraIntent);
}
当我们找不到这个包的时候就是意味着本机没有安装这个程序
然后通过我们的包的名字在应用商店中进行查找
public static void GoToMarket(Context context,String packagename){
Uri uri =Uri.parse("market://details?id="+packagename);
Intent goToMarket=new Intent(Intent.ACTION_VIEW,uri);
goToMarket.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(goToMarket);
}
从上面我们可以看出,我们主要的问题在于如何去查看各个软件的包
现在想到的就是如果说是我们要打开的是我们知道的,那样的话就可以直接写了,但是如果是我们不了解的,我们可以通过以下方式进行获得
方式一,通过minifest文件来进行获得。
而对于第一个我们所需要的就是说同时需要包名和类名的方法
类名,我们需要的是最开始启动的类名,就是说需要的是
这个地方所对应的类名
android.intent.action.MAIN决定应用程序最先启动的Activity
android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里
方式二通过反编译的方法进行获得
首先反编译需要两个工具,一个是dex2jar 另一个是jd-gui
具体用法
下载好自己需要反编译的apk文件
然后运行,进入cmd页面
进入到我们放dex2jar的目录下面 运行dex2jar.bat apk的地址
enter
然后再apk所在目录下会有一个关于apk的jar包
打开jd,选择我们刚刚刚刚编译好的jar包
然后就能看到class文件
然后class文件中的最开头就可以找到我们所需要的包的名字
方式三:通过一些资料进行整理
com.andrew.apollo.ui.activities.HomeActivity CM 音乐apollo
com.bel.android.dspmanager.activity.DSPManager DSP管理器
com.android.vending.AssetBrowserActivity google play 商店
com.uucun.android.cms.activity.MarketLoginAndRegisterActivity 魔趣市场
com.android.contacts.DialtactsActivity 拨号
com.android.gallery3d.app.GalleryActivity 图库
com.lbe.security.ui.SplashActivity LBE安全大师
com.cyanogenmod.filemanager.activities.NavigationActivity CM 文件管理器
com.UCMobile.main.UCMobile UC浏览器
com.tencent.mobileqq.activity.SplashActivity QQ
com.tencent.mtt.SplashActivity QQ浏览器
com.android.stk.stksettings SIM卡工具包
com.android.providers.downloads.ui.DownloadList 下载
com.sds.android.ttpod.EntryActivity 天天动听
com.android.soundrecorder.SoundRecorder 录音机
com.android.phone.EmergencyDialer 手机
net.cactii.flash2.MainActivity 手电筒
com.android.calendar.AllInOneActivity 日历
com.android.deskclock.DeskClock 时钟
com.qqgame.hlddz.hlddzActivity QQ欢乐斗地主
com.android.browser.BrowserActivity 浏览器
com.android.email.activity.Welcome Email
com.baidu.input.ImemainConfigActivity 百度输入法
com.android.camera.CameraLauncher 相机
com.android.mms.ui.ConversationList 信息
com.android.contacts.activities.PeopleActivity 联系人
com.qq.ac.android.activity.SPlashActivity 腾讯微漫
com.android.calculator2.Calculator 计算器
com.android.settings.Settings 设置
com.mfunz.bbs.net.discuz.one.activity.SplashActivity 魔趣论坛
app | package | launcher |
微博 | com.sina.weibo | com.sina.weibo.SplashActivity |
知乎 | com.zhihu.android | com.zhihu.android.ui.activity.GuideActivity |
薄荷 | com.app.one | com.app.one.ui.SplashActivity |
关于这方面的比较好的文章有
点开看
方式四
还可以通过aapt方法进行获得包名
进到我们android 的jdk目录下面
然后可以在打印出的信息中找到mainactivity。从而得到包名
方式五
还可以直接通过直接进行解压看到
然后用notpad++进行编辑就可以找到
方式六
通过android自带的 adb shell,可以找到本机上所有应用的包的名字
上面这么多方法。总有一种适合你。恩,这篇文章就到这里了,希望能帮到大家。