簡體   English   中英

如何在沒有“android.intent.category.LAUNCHER”的情況下啟動Android應用程序

[英]How to launch an Android app without “android.intent.category.LAUNCHER”

我想知道如何在沒有以下情況下啟動Android app

android.intent.category.LAUNCHER

這是我的AndroidManifest.xml

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

如果刪除第3行,該應用將不會在啟動器中。 問題是:我在哪里以及如何以其他方式啟動此應用程序?

您需要使用BroadcastReceiver

public class SafetyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        ActivityManager as = (ActivityManager) context
                .getSystemService(Activity.ACTIVITY_SERVICE);
        if (IsNavigationRunning(as)) {
            Intent i = new Intent(context, VoiceActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }
}

表現:

<application
    android:icon="@drawable/fot"
    android:label="@string/app_name" >
    <activity
        android:name="com.Safety.VoiceActivity"
        android:launchMode="singleTop"
        android:theme="@style/Theme.CompletelyTransparentWindow" >
    </activity>
    <receiver
        android:name="com.Safety.SafetyReceiver"
        android:process=":goodprocess" >
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
</application>

這是一個在收到文本時開始的示例。

如果要啟動自定義活動(例如按下按鈕),這會更好:

Button btn = (Button)findViewById(R.id.xBtn);

btn.setOnClickListener(new OnClickListener() {
@Override
            public void onClick(View v)
            {
                    Intent intent = new Intent("it.prassel.vimsmediaplayer");
                    intent.setComponent(ComponentName
                        .unflattenFromString("it.prassel.vimsmediaplayer/it.prassel.vimsmediaplayer.MainActivity"));
                    intent.addCategory("android.intent.category.LAUNCHER");
                    startActivity(intent);
             }
});

這是與您的自定義活動相關聯的清單:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="it.prassel.vimsmediaplayer"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />


    <uses-feature android:glEsVersion="0x00020000" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="it.prassel.vimsmediaplayer.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="it.prassel.vimsmediaplayer" />
            </intent-filter>
        </activity>
    </application>

</manifest>

哪里

Intent intent = new Intent("it.prassel.vimsmediaplayer");

對應於該行

<action android:name="it.prassel.vimsmediaplayer" />

intent.setComponent(ComponentName
                        .unflattenFromString("it.prassel.vimsmediaplayer/it.prassel.vimsmediaplayer.MainActivity"))

對應於2行

package="it.prassel.vimsmediaplayer"  the part before /
android:name="it.prassel.vimsmediaplayer.MainActivity" the part after /

您的自定義活動既不會出現在菜單中,也不會出現在最近的應用中,它將完全是匿名的。 請注意,如果您希望成為唯一可以訪問您的應用程序的人,請為intent-filter提供有意義的名稱

我想知道如何在沒有的情況下啟動Android應用:android.intent.category.LAUNCHER

在Android中,應該由Intent啟動一個Activity。 Intents可以使用startActivity(Intent myIntent)啟動一個Activity,例如:

Intent myIntent= new Intent(context, target_class.class);
                    myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(myIntent);

您必須將“myIntent”,“context”(通常為“this”)和“target_class”替換為您的變量,以使其起作用。 因此,無論何時需要您的活動,請調用Intent,操作系統將解析該活動

你可以在班上指定。 例如,單擊您想要進入某個活動的按鈕。 所以只需編寫此代碼:

Button btn = (Button)findViewById(R.id.xBtn);

btn.setOnClickListener(new OnClickListener() {

         public void onClick(View v) {
          Intent intnt = new Intent();
          intnt.setAction(android.intent.action.MAIN);
          intnt.setCategory(android.intent.category.LAUNCHER);
          startActivity(intnt);
         }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM