Mik*_*osh 10 android android-intent android-package-managers android-launcher
我将我的活动设置为默认启动器,以拦截主页按钮点击,如下所示:
<activity
android:name=".ExampleActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
当我的活动ExampleActivity
启动时,如果我点击该home键,我会被提示选择.如果我选择将此设为我的默认设置并选择我的活动,我会陷入我的活动中.
问题是,当我离开活动时,我尝试从默认启动器中删除我的活动,但是不成功.
我试过了:
ComponentName componentName = new ComponentName(
"com.example.exampleactivity",
"com.example.exampleactivity.class");
pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)
和:
PackageManager pm = getActivity().getPackageManager();
ComponentName name = new ComponentName(this, "com.example.exampleactivity.class");
pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
Run Code Online (Sandbox Code Playgroud)
但是我的名字home永远不会被删除.
有没有人有办法解决上述问题?
我只是不想将主页按钮作为特定活动的默认设置,而不是我的整个应用程序.当我离开活动时,应将其删除并恢复为默认值.
and*_*per 16
如果您的应用程序正在清除其默认值,您只需致电:
getPackageManager().clearPackagePreferredActivities(getPackageName());
Run Code Online (Sandbox Code Playgroud)
然后,为了显示选择使用哪个启动器的对话框,请使用:
final Intent intent=new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11945 次 |
最近记录: |