标签: android-launcher

如何在使用真实设备时通过代码启动默认的家庭启动器?

在使用模拟器时,我已成功通过以下代码启动默认主启动器:

Intent de_intent=new Intent();
de_intent.setClassName("com.android.launcher","com.android.launcher2.Launcher");
startActivity(de_intent);
Run Code Online (Sandbox Code Playgroud)

但是当我在真实设备中执行此代码时,它显示以下异常:

Unable to find explicit activity class {com.android.launcher/com.android.launcher2.Launcher} have you declared this in AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

android default android-launcher android-homebutton

3
推荐指数
1
解决办法
2710
查看次数

如何在android中启动设备启动服务?

我正在创建一个应用程序,它需要一直运行的服务,即使应用程序关闭,从设备启动到设备关闭.这可以在android中完成吗?

java android android-launcher

3
推荐指数
1
解决办法
3421
查看次数

是否可以禁用菜单按钮?

我正在尝试为某些人制作受限制的Android启动器.我正在尝试的主要功能是

  • 允许访问所选应用程序以进行laucnched.
  • 禁用允许用户显示手机上安装的每个应用的按钮
  • 禁用物理按钮(菜单)以限制用户进入Android的"设置"菜单.

如果这些功能是可行的,那么如果您可以链接我任何示例或解释如何执行此操作将会很棒.

谢谢.

android android-launcher

3
推荐指数
1
解决办法
9824
查看次数

在我的应用中使用图标包

我的应用程序包含一个功能,用于列出用户设备上安装的所有应用程序,并附带图标.现在,用户在此列表中请求图标包支持.

目前我列出已安装的应用程序:

final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

final List<ResolveInfo> rgRi = pm.queryIntentActivities( mainIntent, 0);
Run Code Online (Sandbox Code Playgroud)

然后为每个加载图标ResolveInfo:

.loadIcon(application.getPackageManager());
Run Code Online (Sandbox Code Playgroud)

这给了我应用程序的图标,但不是图标包,而是默认图标.

如果应用程序可用,如何访问应用程序的图标包图标?

android android-launcher

3
推荐指数
1
解决办法
2367
查看次数

android 4.2.2+上的覆盖状态栏

我想覆盖android状态栏.就我而言,它位于顶部.我不想叠加或隐藏导航栏.

注意:解决方案必须适用于android 4.2.2+.我更喜欢非root设备的答案.

我搜索了许多SO问题和答案,但没有一个适用于4.2.2.

下面是我的代码,但它不消耗触摸事件.这就是状态栏打开其面板的原因.我不想要这个.

@Override 
public void onCreate() {
    super.onCreate();

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    int statusBarHeight = (int) Math.ceil(25 * getResources().getDisplayMetrics().density);

    overlay = new Button(this);
    overlay.setBackgroundColor(Color.GREEN);
    overlay.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.i("StatusBar", "touched");
            return false;
        }
    });

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.FILL_PARENT,
            statusBarHeight,
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|
            WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH|
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
            PixelFormat.TRANSLUCENT);

    params.gravity = Gravity.TOP | Gravity.RIGHT;

    windowManager.addView(overlay, params);

}

@Override
public void onDestroy() {
    super.onDestroy();
    if (overlay != null) windowManager.removeView(overlay);
}
Run Code Online (Sandbox Code Playgroud)

在主要活动中我开始服务:

startService(new …
Run Code Online (Sandbox Code Playgroud)

android statusbar android-ui android-launcher android-4.2-jelly-bean

3
推荐指数
1
解决办法
5111
查看次数

如何仅在应用程序第一次启动时启动具有特定 Activity 的应用程序?

我只想在我的应用程序第一次启动时启动一个 Activity,从那时起,该应用程序每次都应该与另一个(启动器)活动一起启动。所以我基于这个 SO 答案实现了一个解决方案。

该解决方案围绕boolean一种偏好(startedBeforePreferenceKey在以下代码中作为关键的偏好)。在onCreate()启动器活动中,我尝试使用密钥检索首选项startedBeforePreferenceKey并将其存储在变量中startedBefore。如果首选项不存在,startedBefore则指定为false

然后我检查是否startedBeforefalse,如果是,我创建提到的首选项,为其赋予值true并将其存储在 中SharedPreferences,然后启动此活动,该活动应首次启动应用程序。这样,当下次执行此检查时onCreate()startedBefore将被分配true,因此此启动一次活动将不会启动。

问题是,当应用程序首次启动时,正常启动器会在仅当首次启动应用程序时启动应用程序的活动之前短暂显示。

当应用程序第一次启动时,正常的启动器根本不应该显示。直接地,我想在应用程序首次启动时显示的特殊活动应该显示。

我应该怎么办?

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean startedBefore = sharedPreferences.getBoolean(getString(R.string.startedBeforePreferenceKey), false);

if (!startedBefore) {
    SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences.edit();
    sharedPreferencesEditor.putBoolean(getString(R.string.startedBeforePreferenceKey), true);
    sharedPreferencesEditor.commit();
    startActivity(new Intent(this, MainActivity.class)); 
} 
Run Code Online (Sandbox Code Playgroud)

编辑: @HammadTariqSahi

首先,摘录自 LogCat:

03-16 08:42:25.629: E/AndroidRuntime(1837): FATAL EXCEPTION: main
03-16 08:42:25.629: E/AndroidRuntime(1837): Process: …
Run Code Online (Sandbox Code Playgroud)

android onresume oncreate android-activity android-launcher

3
推荐指数
1
解决办法
4352
查看次数

如何以编程方式从设置中设置默认启动器?

我想将我的启动器设置为默认启动器。我的代码对很多人来说都可以正常工作,但在乐视设备上却无法正常工作。因为它提供了从默认应用程序设置中设置默认启动器的功能。

运行此代码时,它会在默认启动器上移动,但仅在乐视设备中不显示启动器选择器弹出窗口。

如何打开默认应用程序选择设置?

我的选择默认启动器的代码

private void setDefLauncher(Context c) {



    PackageManager p = c.getPackageManager();
    ComponentName cN = new ComponentName(c, FakeLauncher.class);
    p.setComponentEnabledSetting(cN,
            PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
            PackageManager.DONT_KILL_APP);

    Intent selector = new Intent(Intent.ACTION_MAIN);
    selector.addCategory(Intent.CATEGORY_HOME);
    c.startActivity(selector);

    p.setComponentEnabledSetting(cN,
            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
            PackageManager.DONT_KILL_APP);
}
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml

        <activity
            android:name="com.android.launcher.launcher3.Launcher"
            android:clearTaskOnLaunch="true"
            android:enabled="true"
            android:excludeFromRecents="true"
            android:launchMode="singleTask"
            android:resumeWhilePausing="true"
            android:screenOrientation="nosensor"
            android:stateNotNeeded="true"
            android:taskAffinity=""
            android:theme="@style/Theme"
            android:windowSoftInputMode="adjustPan" >
            <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" />
                <category android:name="android.intent.category.MONKEY" />
            </intent-filter>
        </activity>
  <activity
            android:name="com.launcher2.activitys.FakeLauncher"
            android:enabled="false"
            android:excludeFromRecents="true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" /> …
Run Code Online (Sandbox Code Playgroud)

android default android-launcher

3
推荐指数
1
解决办法
8370
查看次数

Android 应用程序在启动时打开应用程序信息屏幕,而不是启动主 Activity

我不确定这是否是一个问题,但这是我第一次遇到这个问题。

我正在开发一个应用程序。当我在进行一些编码后断开应用程序与 Android Studio 和 PC 的连接时,如果我尝试在手机上打开应用程序,它会启动应用程序信息屏幕(我们在其中看到强制停止、清除内存的屏幕),而不是启动我的主要活动我无法使用该应用程序。当我通过连接 Android Studio重新启动我的 Activity 时,它工作正常。

我也开发过其他应用程序,但没有遇到类似的情况。

这是我的应用程序清单中的代码:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.meanings_downloader">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"            />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<application
    android:requestLegacyExternalStorage="true"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".Music_Activity"></activity>
    <activity
        android:name=".SettingsActivity"
        android:label="@string/title_activity_settings" />
    <activity android:name=".settings" />
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
      <action android:name="android.intent.action.SEND" />
            <data android:mimeType="*/*"/>
            <category android:name="android.intent.category.DEFAULT"/>


            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service android:name=".Music" >
        <intent-filter>
            <action android:name="android.media.browse.MediaBrowserServic"/>
        </intent-filter>
    </service>
</application>
Run Code Online (Sandbox Code Playgroud)

这是一个问题还是我做错了什么?

android android-launcher

3
推荐指数
1
解决办法
5224
查看次数

是否有可能获得Launcher的快捷方式布局并在我们自己的小部件中使用它?

我注意到Dropbox快捷方式小部件对指定文件夹的外观与快捷方式布局一致,无论我们使用哪个启动器:

在此输入图像描述 在此输入图像描述

所以我想制作一个行为和看起来像快捷方式的小部件,并与用户的启动器保持一致.

是否有可能获得Launcher的快捷方式布局并在我们自己的小部件中使用它?

android android-widget android-layout android-launcher

2
推荐指数
1
解决办法
699
查看次数

如何在jetpack compose中显示透明的应用程序背景

我正在尝试制作一个简单的启动器,并尝试将应用程序的背景显示为完全透明或部分透明。你们能帮我看看该怎么做吗?

android app-launcher android-launcher android-jetpack-compose

2
推荐指数
1
解决办法
1581
查看次数