在使用模拟器时,我已成功通过以下代码启动默认主启动器:
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中完成吗?
我正在尝试为某些人制作受限制的Android启动器.我正在尝试的主要功能是
如果这些功能是可行的,那么如果您可以链接我任何示例或解释如何执行此操作将会很棒.
谢谢.
我的应用程序包含一个功能,用于列出用户设备上安装的所有应用程序,并附带图标.现在,用户在此列表中请求图标包支持.
目前我列出已安装的应用程序:
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 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
我只想在我的应用程序第一次启动时启动一个 Activity,从那时起,该应用程序每次都应该与另一个(启动器)活动一起启动。所以我基于这个 SO 答案实现了一个解决方案。
该解决方案围绕boolean一种偏好(startedBeforePreferenceKey在以下代码中作为关键的偏好)。在onCreate()启动器活动中,我尝试使用密钥检索首选项startedBeforePreferenceKey并将其存储在变量中startedBefore。如果首选项不存在,startedBefore则指定为false。
然后我检查是否startedBefore是false,如果是,我创建提到的首选项,为其赋予值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) 我想将我的启动器设置为默认启动器。我的代码对很多人来说都可以正常工作,但在乐视设备上却无法正常工作。因为它提供了从默认应用程序设置中设置默认启动器的功能。
运行此代码时,它会在默认启动器上移动,但仅在乐视设备中不显示启动器选择器弹出窗口。
如何打开默认应用程序选择设置?
我的选择默认启动器的代码
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 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)
这是一个问题还是我做错了什么?
我注意到Dropbox快捷方式小部件对指定文件夹的外观与快捷方式布局一致,无论我们使用哪个启动器:

所以我想制作一个行为和看起来像快捷方式的小部件,并与用户的启动器保持一致.
是否有可能获得Launcher的快捷方式布局并在我们自己的小部件中使用它?
我正在尝试制作一个简单的启动器,并尝试将应用程序的背景显示为完全透明或部分透明。你们能帮我看看该怎么做吗?
android app-launcher android-launcher android-jetpack-compose
android ×10
android-launcher ×10
default ×2
android-ui ×1
app-launcher ×1
java ×1
oncreate ×1
onresume ×1
statusbar ×1