• 要将系统默认的WiFi连接程序或者浏览器更改为我们自己的应用,可以通过隐式意图来实现。Intent设置相应的Action,以WiFi为例:Intent intent = new Intent("android.settings.WIFI_SETTINGS");

    设置默认应用程序


    要将系统默认的WiFi连接程序或者浏览器更改为我们自己的应用,可以通过隐式意图来实现。Intent设置相应的Action,以WiFi为例:

    Intent intent = new Intent("android.settings.WIFI_SETTINGS");
    if (intent.resolveActivity(getPackageManager())) {
        startActivity(intent);
    }

    在AndroidManifest.xml里注册IntentFilter:

     <activity android:name="com.***.WiFiActivity">
        <intent-filter>
            <action android:name="android.settings.WIFI_SETTINGS" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    如果系统存在有多个注册了该类型行为IntentFilter的组件(比如Activity),则会弹出如下图的选择框,让用户选择打开哪个应用。如果用户勾选了“下次不再询问”、“不再提示”的话,那就代表设置该应用为默认的应用程序。

    image

    ps:Android6.0及以上,无法再设置WiFi类型的默认应用程序,浏览器、桌面等其他类型的应用,可以。

    清除默认应用程序


    如果用户在此之前已经设置了别的应用为默认的应用程序,但我们想清除掉,让用户重新选择新的默认程序。系统为此提供了个清除默认应用程序的api:

    getPackageManager().clearPackagePreferredActivities(packageName);

    这是然并卵的,系统级别的APP才具有权限使用。

    对于第三方APP,我们只能另辟蹊径了。以设置WiFi默认应用程序为例,实现方法是:先设置一个空的Activity为默认,然后再将该空的Activity禁用,达到清除默认程序的目的。代码如下:

    /**
         * 清除默认程序并设置默认程序(先设置一个空的Activity为默认,然后再将该空的Activity禁用,达到清除默认程序的目的。)
         * <p>
         *     Android6.0及以上无法设置wifi默认程序,但设置为默认浏览器等其他类型的,是可以的
         */
        public void clearDefaultAndSet() {
            PackageManager pm = getPackageManager();
            String pn = getPackageName();
            String hn = FakeActivity.class.getName();
            ComponentName cn = new ComponentName(pn, hn);
            Intent intent = new Intent("android.settings.WIFI_SETTINGS");
            intent.addCategory("android.intent.category.DEFAULT");
    //      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            pm.setComponentEnabledSetting(cn, 1, 1);
            startActivity(intent);
            pm.setComponentEnabledSetting(cn, 0, 1);
        }

    FakeActivity继承了Activity,没有任何有意义的内容,在AndroidManifest.xml声明并加上IntentFilter即可:

    <activity android:name="com.***.FakeActivity"
        android:enabled="false" >
        <intent-filter>
            <action android:name="android.settings.WIFI_SETTINGS" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        </activity>

    这样,我们无需任何权限就把默认应用程序给清除了,貌似有点黑科技的感觉。。。

    ps:以上是直接清除了默认应用程序,但需求往往都是先判断当前默认应用程序是否为我们自己的应用,如果不是才调用clearDefaultAndSet()方法清除掉。。各位见需使用。

    再ps,获取当前默认应用程序的代码如下:

    PackageManager pm = getPackageManager();  
    Intent intent = new Intent("android.settings.WIFI_SETTINGS");  
    ResolveInfo info = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);  
    Log.i(TAG, "当前默认程序的包名pkgName = " + info.activityInfo.packageName);  

    未设置默认,info.activityInfo.packageName=android

    设置了默认,info.activityInfo.packageName=com.aaa.bbb

    展开全文
  • Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到它不在弹出让我选择哪个...
    
    

    Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)

    刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到它不在弹出让我选择哪个程序打开的界面了!!!直接就支付宝了,我...{醉了}

    然后找了个年代久远的帖子说可以清除,嗯,然后我在设置里慢慢找...方法记在下面(图文版,哈哈 =.=)

    1. 三星打开文件时,打开方式选择面板:

    Android 打开方式选定后默认了改不回来?解决方法

    然后我选择了支付宝....

    支付宝说:它不支持....

    Android 打开方式选定后默认了改不回来?解决方法

    2. 你发现你现在在进行之前的操作,它根本就不会弹出打开方式选择面板..去设置里清除之前的默认打开方式

    之前是用支付宝打开的,所以在所有的应用中找到支付宝

    三星的位置是:设置 --> 应用程序 --> 应用程序管理器 --> 支付宝(换成你选择打开的app名称) --> 设置为默认 --> 清除默认值点击清除之前的默认打开方式.

    Android 打开方式选定后默认了改不回来?解决方法

    Android 打开方式选定后默认了改不回来?解决方法

    3. 重要!!! 为了避免再出现这种尴尬麻烦跑设置界面的操作,我们需要 "仅此一次"与"总是"的询问

    三星默认是不会问你的.

    设置: 设置 --> 应用程序 --> 默认应用程序 --> 默认应用程序选择 -->(点击选择) -->设置默认应用程序前询问

    如图:

    Android 打开方式选定后默认了改不回来?解决方法

    4. 这样,再次进行最开始的操作,选择面板变成了这样:

    Android 打开方式选定后默认了改不回来?解决方法

    好了,差不多就这样吧,不知道朋友收藏下吧,或者为你的女朋友收藏下,她肯定找不到!!! 哈哈哈,话说你给她买iPhone我很担心你啊 =.={逃}睡觉

    本文为头条号作者发布,不代表今日头条立场。

    展开全文
  • Android系统应用默认权限设置frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java 类是对默认权限管理类我们可以通过此类来对我们系统中存在的应用进行默认权限设置。...

    Android系统应用默认权限设置


    frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java 类是对默认权限管理类

    我们可以通过此类来对我们系统中存在的应用进行默认权限设置。 
    下面举个例子,修改系统中应用存储空间权限:

        private void grantDefaultSystemHandlerPermissions(int userId) {
            ...
            grantStoragePermissionsToCustomApp(userId);// add 
            ...
        }
    
    private void grantStoragePermissionsToCustomApp(int userId){
        final String []itemString = mService.mContext.getResources()
            .getStringArray(com.android.internal.R.array.storage_permission_custom_packagename);
        for (int i = 0; i < itemString.length; i++) {
            PackageParser.Package customPackage = getPackageLPr(itemString[i]);
            if ((customPackage != null) && doesPackageSupportRuntimePermissions(customPackage)) {
                grantRuntimePermissionsLPw(customPackage, STORAGE_PERMISSIONS, userId);
            }
        }
    }
    

    当然要通过一个xml文件讲我们需要默认打开的应用罗列

    <?xml version="1.0" encoding="utf-8"?>
    
    <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    
    <string-array name="storage_permission_custom_packagename" translatable="false">
        <item>com.mediatek.datatransfer</item>
        <item>com.android.defcontainer</item>
        <item>com.android.calendar</item>
        <item>com.mediatek.camera</item>
        <item>com.android.chrome</item>
        <item>com.android.deskclock</item>
        <item>com.android.contacts</item>
        <item>com.android.development</item>
        <item>com.android.email</item>
        <item>com.android.fmradio</item>
        <item>com.facebook.katana</item>
        <item>com.mediatek.filemanager</item>
        <item>com.android.gallery3d</item>
        <item>com.google.android.gm</item>
        <item>com.google.android.googlequicksearchbox</item>
        <item>com.google.android.music</item>
        <item>com.google.android.apps.maps</item>
        <item>com.android.mms</item>
        <item>com.cmcm.cmx.pagetwo</item>
        <item>com.android.dialer</item>
        <item>com.android.soundrecorder</item>
        <item>com.google.android.youtube</item>
        <item>com.android.htmlviewer</item>
        <item>com.android.launcher3</item>
        <item>com.mediatek.lbs.em2.ui</item>
        <item>com.mediatek.wifitest</item>
        <item>com.mediatek.calendarimporter</item>
        <item>com.adups.fota</item>
        <item>com.android.sharedstoragebackup</item>
        <item>com.android.wallpapercropper</item>
        <item>com.android.dreams.phototable</item>
        <item>com.android.inputmethod.latin</item>
        <item>com.android.exchange</item>
        <item>com.android.providers.calendar</item>
        <item>com.mediatek.dataprotection</item>
        <item>com.mediatek.flp.em</item>
        <item>com.google.android.gms</item>
        <item>com.whatsapp</item>
        <item>com.android.browser</item>
    </string-array>
    展开全文
  • 我自己做的一个小程序,想更改程序安装后的默认显示图片,但是我发现只能改一次,以后再改还是显示第一次更改后的图片(此时我已把最后一次更改前的全部图片都删除了,所以不会是名称填错),这是为什么??求高人指点...

    我自己做的一个小程序,想更改程序安装后的默认显示图片,但是我发现只能改一次,以后再改还是显示第一次更改后的图片(此时我已把最后一次更改前的全部图片都删除了,所以不会是名称填错),这是为什么??求高人指点

    说明:我修改图标的方法如下:

    把我想要用的图片icon.png放入drawable文件夹,修改AndroidManifest.xml文件application android:icon="@drawable/icon"

    把res文件夹下drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi文件加下的cn_launcher.png删除掉

    展开全文
  • android设备修改默认桌面为自定义应用 应用场景 在一些专用安卓设备(例如丰巢柜),可能需要在点击默认的home键时启动自定义应用,屏蔽用户开启其他应用的入口,可通过下面介绍的方法将自己的应用设置为默认桌面。...

    android设备修改默认桌面为自定义应用

    应用场景
    在一些专用安卓设备(例如丰巢柜),可能需要在点击默认的home键时启动自定义应用,屏蔽用户开启其他应用的入口,可通过下面介绍的方法将自己的应用设置为默认桌面。但是这时用户无法开启android设备的其他应用了,所以还需要为管理用户提供开启其他应用(例如系统设置)的入口。

    1、修改默认桌面
    假设需要设置为桌面应用app入口activity为MainActivity。

    1.1 修改应用的AndroidManifest.xml
    在MainActivity的intent-filter节点中添加如下配置:

    1.2 创建工具类PackageListCache,缓存当前android安装的应用。

    import android.app.Activity;
    import com.alibaba.fastjson.JSONObject;
    import java.util.HashMap;
    import java.util.Map;
    
    public final class PackageListCache {
        //应用报名对应的启动入口activity和app名称
        private static Map<String, JSONObject> PACKAGE_2_ACTIVITY = new HashMap<>();
        private static Activity MAIN_ACTIVITY = null;
    
        public static Activity getMainActivity() {
            return MAIN_ACTIVITY;
        }
    
        public static void setMainActivity(Activity mainActivity) {
            MAIN_ACTIVITY = mainActivity;
        }
    
        public static void addPackage(String pkg, JSONObject info) {
            PACKAGE_2_ACTIVITY.put(pkg, info);
        }
    
        public static Map<String, JSONObject> getPackage2Activity() {
            return PACKAGE_2_ACTIVITY;
        }
    }
    

    1.3 修改 MainActivity
    1.3.1 MainActivity添加变量,存储当前安卓设备的安装应用。
    private List localApps = new ArrayList<>();

    1.3.2 MainActivity启动后获取安卓设备的安装应用,供其他逻辑使用。
    在onCreate方法中添加如下处理:

    localApps = getPackageManager().queryIntentActivities(mainIntent, 0);
    PackageListCache.setMainActivity(this);
    PackageManager pManager = MainActivity.this.getPackageManager();
    if (localApps.size() > 0) {
        for (int i = 0; i < localApps.size(); i++) {
            ActivityInfo act = localApps.get(i).activityInfo;
            PackageListCache.addPackage(act.packageName, new JSONObject().fluentPut("name", act.name).fluentPut("label", localApps.get(i).loadLabel(pManager).toString()));
        }
    }
    

    1.4 在自定义应用中启动其他应用
    String pkgName;//PackageListCache的PACKAGE_2_ACTIVITY中的key,即某个应用的包名

    ComponentName componet = new ComponentName(pkgName, list.get(pkgName).getString("name"));
    Intent intent = new Intent();
    intent.setComponent(componet);
    PackageListCache.getMainActivity().startActivity(intent);
    

    在这里插入图片描述

    1.5 说明
    完成如上设置并启动自定义应用后,再点击系统home键会弹出桌面选项,可将当前自定义应用设置为默认桌面(如果设置为永久桌面,可在设置>应用>当前自定义应用>清除默认设置 来解除永久桌面)。

    展开全文
  • 问题背景: 因为目前很多IPTV的厂商+广电的要求,不允许用户自己替换自己的...下面用Android 5.1.1来举例说明,理论上AN的版本对此模块改动差异不太多。 Google官方Android原生Launcher设置 Launcher是Android
  • Android系统的手机或者平板,需要添加一些程序,然后默认打开。例如:word类文档,可以指定用wps的Android版本打开。但是有的时候,由于我们新安装了例如手机百度,
  • Android中有时打开一个文件,系统会弹出一个应用程序选择列表供你选择.如果你把某个应用程序设为默认值,则不会弹出选择框,而会直接调用该程序. 设置方法如下:  PackageManager pm = getPackageManager();  ...
  • Android应用程序的默认最大内存值为16M,不同的手机版本和型号有所不同. Android应用程序的默认最大内存值 有些应用程序可能会出现内存溢出,...除了要检查修正代码之外,还可以考虑修改Android应用程序的默认最大...
  • 要设为系统默认的短信应用首先要配置一下AndroidManifest.xml文件,添加下列: <!-- BroadcastReceiver that listens for incoming SMS messages --> <receiver android:name=".demo.SmsReceiver" ...
  • 之前做一款桌面广告机项目时,有一个修改默认语言的需求,查找FAQ发现MTK有介绍怎么修改,如下: 默认开机语言设置 如果想把某种语言设置为开机默认语言,只需把这个语言的代码放到(Android L PRODUCT_LOCALES后面...
  • Android的国际化做得还是不错的,通过设置资源文件的名称,如:values-zh-rCN,即可,系统会自动根据当前系统设置的语言进行选择,默认是选择values目录下的资源文件的。那么如果某个应用程序要指定默认语言,无论...
  • Android应用程序的默认最大内存值为16M,不同的手机版本和型号有所不同. 有些应用程序可能会出现内存溢出,譬如: ...除了要检查修正代码之外,还可以考虑修改Android应用程序的默认最大内存值。
  • 我们的手机上默认了很多android应用市场,那怎么调起这些市场,并进入自己的app呢?其实代码很简单:  Intent intent = new Intent(Intent.ACTION_VIEW);  intent.setData(Uri.parse("market://d
  • 本文是基于Android5.1的代码 在做定制需求的时候,需要修改系统通知的声音,将其禁用...1. 直接修改系统层默认的声音大小在系统代码frameworks/base/media/java/android/media/AudioService.java的开头定义了两个数组
  • 修改系统默认语言:将Z:\ACCME8702-RT313\S700\android\device\actions\s700_cb6目录下的device.mk文件中PRODUCT_PROPERTY_OVERRIDES += \部分下面修改为ro.product.locale.language=en ro.product.locale.region=US...
  • 修改android系统初始默认语言 \\192.168.1.113\jd_work2_rk3188_sdk\rk3188_android5.1_pad_m310\build\tools\buildinfo.sh    echo "ro.product.locale.language=zh"  echo "ro.product....
  • 一:安装过程 APK是类似Symbian Sis或Sisx的...Android应用安装有如下四种方式 1. 系统应用安装――开机时完成,没有安装界面 2. 网络下载应用安装――通过market应用完成,没有安装界面 3. ADB工具
  • 关于修改系统默认字体大小的方法:到设置应用所在目录leadcore\third-packages\apps\Settings\res\values\目录下的arrays.xml文件中的entryvalues_font_size的item值大小,但是请注意,在frameworks\base\core\java\...
  • android系统允许存在多个Launcher并设置默认主界面。 应用程序作为Home(主界面)需在Activity的intent-filter节点中添加如下内容 <category android:name="android.intent.category.HOME" /> <category andr
1 2 3 4 5 ... 20
收藏数 118,227
精华内容 47,290
关键字:

修改android默认应用