我想知道如何在不使用
的情况下发布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行,该应用将不会在启动器中。问题是:我在哪里以及如何以其他方式启动此应用程序?
答案 0 :(得分:8)
您需要使用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>
这是一个在收到文本时开始的例子。
答案 1 :(得分:1)
如果您想要启动自定义活动(例如按下按钮:
),这样会更好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提供有意义的名称
答案 2 :(得分:0)
我想知道如何在没有的情况下启动Android应用:android.intent.category.LAUNCHER
在Android中,活动应由Intent启动。 Intent可以使用startActivity(Intent myIntent)启动一个Activity,例如:
Intent myIntent= new Intent(context, target_class.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
您必须更换&#34; myIntent&#34;,&#34; context&#34; (通常是&#34;这&#34;)和&#34; target_class&#34;使用您的变量,以使其工作。 因此,无论何时需要您的活动,请调用Intent,操作系统将解析活动
答案 3 :(得分:-1)
您可以在班级中指定。 例如,单击您想要进入某个活动的按钮。所以只需编写此代码:
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);
}
});