2016-09-09 9 views
0

私はHome_Screenランチャーを開発しました。クリックすると、使用可能なHome_Screen Launcherのリストが表示されます。私はこの方法を使用しました:アンドロイドでHome_Screenランチャーチューザーを作る方法は?

Intent i = new Intent(Intent.ACTION_MAIN); 
      i.addCategory(Intent.CATEGORY_HOME); 
      i.addCategory(Intent.CATEGORY_DEFAULT); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(Intent.createChooser(i, "Choose Launcher, Please!")); 

私がしたいことをします。このチューザからHome_Screen Launcherを選択すると、LauncherがデフォルトのHome_Screen Launcherではなくアクティビティとして開きます。

あなたが見つけたので、私は選択肢を作って、デフォルトのHome_Screen Launcherとして自分のアプリを設定したいと思います。これどうやってするの?

注:

public static void resetPreferredLauncherAndOpenChooser(Context context) { 
PackageManager packageManager = context.getPackageManager(); 
ComponentName componentName = new ComponentName(context, MainLauncher.class); 
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

Intent selector = new Intent(Intent.ACTION_MAIN); 
selector.addCategory(Intent.CATEGORY_HOME); 
selector.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(selector); 

packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);} 

「」「」「」「」「」「」「」:私もこの方法を試してみましたが、それが作成したチューで私のアプリが表示されない 「 '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' 「 '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' 「 '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' '

編集:これは私のマニフェストです。私はHome_Launcherとしてのアクティビティとcategory.LAUNCHERとしてのアクティビティを持っています。私を助けてください。私はウェブを検索したが、解決策が見つからなかった。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
package="com.ablazephoenix.myappluncher"> 

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="false" 
    tools:replace="android:supportsRtl" 
    android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"> 
    <activity android:name=".FirstPage" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

    <activity android:name=".Allowed_Apps_Chooser" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"/> 

    <activity android:name=".Wallpaper_Chooser" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"/> 

    <activity android:name=".MainLauncher" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" 
     android:launchMode="singleTask" 
     android:stateNotNeeded="true"> 
     <intent-filter> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 
    </activity> 

    <service android:name=".LauncherService"/> 

    <activity android:name=".Settings" 
     android:label="Settings" 
     android:theme="@style/AppTheme"/> 

</application> 

+0

マニフェストで定義されている 'FakeLauncherActivity'のデフォルト状態は何ですか? – tynn

答えて

0

Finnaly、私はproblomを解決!


最初は、ウェブを正しく検索しないことをお詫びします。 OK。始めましょう。 まず、MainLauncherという名前のHome_Launcherを作成したとします。下記の方法をご覧ください:

Intent selector = new Intent(Intent.ACTION_MAIN); 
    selector.addCategory(Intent.CATEGORY_HOME); 
    selector.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(selector); 

この方法は常に機能しません。 Home_launcherをデフォルトに設定することは初めてのことです。 2回目にこの方法を試すと、デバイスはHome_Launcherを使用するためにアプリケーションを新しいものとして認識せず、この方法ではデバイスのデフォルトのホームランチャーが表示されます。あなたは以下のように自分のメインHome_Launcher横に偽Home_launcherを行う必要があります

public class FakeLauncherActivity extends Activity { 
/** THIS IS THE FAKE LAUNCHER AND SHOULDN'T CONTAIN ANYTHING! */} 

と以下のようにマニフェストにそれを定義します。

<activity 
     android:name=".FakeLauncherActivity" 
     android:enabled="false"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

を...そして、あなたは以下のようにチューを作ることができる:

public static void resetPreferredLauncherAndOpenChooser(Context context) { 
    PackageManager packageManager = context.getPackageManager(); 
    ComponentName componentName = new ComponentName(context, FakeLauncherActivity.class); 
    packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

    Intent selector = new Intent(Intent.ACTION_MAIN); 
    selector.addCategory(Intent.CATEGORY_HOME); 
    selector.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(selector); 

    packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP); 
} 

この方法を使用すると、ユーザーが選択したときにいつでも新しいHome_Launcherがデバイスで使用可能であると考えられ、使用可能なすべてのHome_Launchersが表示されますあなたのFakeLauncherActivityを除いてMainLauncherが含まれています。


私の答えが役に立つと願っています。詳細については、この素晴らしい記事をご覧ください:enter link description here

関連する問題